[Scummvm-git-logs] scummvm master -> 60d9b79c0f599555da7a137722e336a9dfef3d2b

sev- sev at scummvm.org
Fri May 21 08:51:10 UTC 2021


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:
68099e5ebe GRAPHICS: MACGUI: fix the wm was not correctly reflushed when changing the menu items
1b211371cf GRAPHICS: MACGUI: fix the offset in macmenu
60d9b79c0f GRAPHICS: MACGUI: add intersection check with macmenu and macwindow


Commit: 68099e5ebee453c9b4b66d6fdff44d25d123cd68
    https://github.com/scummvm/scummvm/commit/68099e5ebee453c9b4b66d6fdff44d25d123cd68
Author: ysj1173886760 (1173886760 at qq.com)
Date: 2021-05-21T10:51:07+02:00

Commit Message:
GRAPHICS: MACGUI: fix the wm was not correctly reflushed when changing the menu items

Changed paths:
    graphics/macgui/macmenu.cpp


diff --git a/graphics/macgui/macmenu.cpp b/graphics/macgui/macmenu.cpp
index c042e6f529..866eb92cc4 100644
--- a/graphics/macgui/macmenu.cpp
+++ b/graphics/macgui/macmenu.cpp
@@ -1052,6 +1052,7 @@ bool MacMenu::mouseClick(int x, int y) {
 
 						_menustack.pop_back(); // Drop previous submenu
 						_contentIsDirty = true;
+						_wm->setFullRefresh(true);
 					}
 				}
 


Commit: 1b211371cf4e9f12843059a82b77ccc36837c38b
    https://github.com/scummvm/scummvm/commit/1b211371cf4e9f12843059a82b77ccc36837c38b
Author: ysj1173886760 (1173886760 at qq.com)
Date: 2021-05-21T10:51:07+02:00

Commit Message:
GRAPHICS: MACGUI: fix the offset in macmenu

Changed paths:
    graphics/macgui/macmenu.cpp


diff --git a/graphics/macgui/macmenu.cpp b/graphics/macgui/macmenu.cpp
index 866eb92cc4..4ba1a093aa 100644
--- a/graphics/macgui/macmenu.cpp
+++ b/graphics/macgui/macmenu.cpp
@@ -890,7 +890,7 @@ void MacMenu::renderSubmenu(MacMenuSubMenu *menu, bool recursive) {
 	_screen.hLine(r->left + 3, r->bottom + 1, r->right + 1, _wm->_colorBlack);
 
 	int y = r->top + 1;
-	int x = _align == kTextAlignRight ? -kMenuWin95LeftDropdownPadding: kMenuWin95LeftDropdownPadding;
+	int x = _align == kTextAlignRight ? -_menuRightDropdownPadding: _menuLeftDropdownPadding;
 	x += r->left;
 
 	for (uint i = 0; i < menu->items.size(); i++) {


Commit: 60d9b79c0f599555da7a137722e336a9dfef3d2b
    https://github.com/scummvm/scummvm/commit/60d9b79c0f599555da7a137722e336a9dfef3d2b
Author: ysj1173886760 (1173886760 at qq.com)
Date: 2021-05-21T10:51:07+02:00

Commit Message:
GRAPHICS: MACGUI: add intersection check with macmenu and macwindow

Changed paths:
    graphics/macgui/macmenu.cpp
    graphics/macgui/macmenu.h
    graphics/macgui/macwindowmanager.cpp


diff --git a/graphics/macgui/macmenu.cpp b/graphics/macgui/macmenu.cpp
index 4ba1a093aa..85ea56e719 100644
--- a/graphics/macgui/macmenu.cpp
+++ b/graphics/macgui/macmenu.cpp
@@ -1038,6 +1038,15 @@ bool MacMenu::keyEvent(Common::Event &event) {
 	return false;
 }
 
+bool MacMenu::checkIntersects(Common::Rect &rect) {
+	if (_bbox.intersects(rect))
+		return true;
+	for (uint i = 0; i < _menustack.size(); i++)
+		if (_menustack[i]->bbox.intersects(rect))
+			return true;
+	return false;
+}
+
 bool MacMenu::mouseClick(int x, int y) {
 	if (_bbox.contains(x, y)) {
 		for (uint i = 0; i < _items.size(); i++) {
diff --git a/graphics/macgui/macmenu.h b/graphics/macgui/macmenu.h
index 36339f080b..5efb5011e4 100644
--- a/graphics/macgui/macmenu.h
+++ b/graphics/macgui/macmenu.h
@@ -95,6 +95,8 @@ public:
 
 	void closeMenu();
 
+	bool checkIntersects(Common::Rect &rect);
+
 	Common::Rect _bbox;
 
 private:
diff --git a/graphics/macgui/macwindowmanager.cpp b/graphics/macgui/macwindowmanager.cpp
index 9f55fd1988..08a2c76197 100644
--- a/graphics/macgui/macwindowmanager.cpp
+++ b/graphics/macgui/macwindowmanager.cpp
@@ -657,7 +657,19 @@ void MacWindowManager::draw() {
 
 	// Menu is drawn on top of everything and always
 	if (_menu && !(_mode & kWMModeFullscreen)) {
-		_menu->draw(_screen, _fullRefresh);
+		if (_fullRefresh)
+			_menu->draw(_screen, _fullRefresh);
+		else {
+			// add intersection check with menu
+			bool menuRedraw = false;
+			for (Common::Array<Common::Rect>::iterator dirty = dirtyRects.begin(); dirty != dirtyRects.end(); dirty++) {
+				if (_menu->checkIntersects(*dirty)) {
+					menuRedraw = true;
+					break;
+				}
+			}
+			_menu->draw(_screen, menuRedraw);
+		}
 	}
 
 	_fullRefresh = false;




More information about the Scummvm-git-logs mailing list