[Scummvm-git-logs] scummvm master -> c64c763fd2f144a71b3ee0759da5635862434f72
bluegr
noreply at scummvm.org
Wed Jan 8 18:00:50 UTC 2025
This automated email contains information about 4 new commits which have been
pushed to the 'scummvm' repo located at https://github.com/scummvm/scummvm .
Summary:
796719cd05 GRAPHICS: MACGUI: Allow menus in the menu bar to be drawn disabled
67da94f031 GRAPHICS: MACGUI: Disable keyboard shortcuts for disabled menus
f489b45282 GRAPHICS: MACGUI: Draw submenu arrow correctly on disabled menu items
c64c763fd2 GRAPHICS: MACGUI: Don't expand disabled submenus
Commit: 796719cd05500f650d795976f2391db880ce1498
https://github.com/scummvm/scummvm/commit/796719cd05500f650d795976f2391db880ce1498
Author: Torbjörn Andersson (eriktorbjorn at users.sourceforge.net)
Date: 2025-01-08T20:00:45+02:00
Commit Message:
GRAPHICS: MACGUI: Allow menus in the menu bar to be drawn disabled
Disabled menus can still be opened. Menu items in disabled menus will
look and act as if they were individually disabled. Enabling the menu
will restore it to its pre-disabled state.
Changed paths:
graphics/macgui/macmenu.cpp
diff --git a/graphics/macgui/macmenu.cpp b/graphics/macgui/macmenu.cpp
index 8fe534f8578..e1948b34c63 100644
--- a/graphics/macgui/macmenu.cpp
+++ b/graphics/macgui/macmenu.cpp
@@ -970,7 +970,6 @@ template <typename T>
static void drawMenuPattern(ManagedSurface &srcSurf, ManagedSurface &destSurf, const byte *pattern, int x, int y, int width, uint32 colorKey) {
// I am lazy to extend drawString() with plotProc as a parameter, so
// fake it here
-
for (int ii = 0; ii < srcSurf.h; ii++) {
const T *src = (const T *)srcSurf.getBasePtr(0, ii);
T *dst = (T *)destSurf.getBasePtr(x, y + ii);
@@ -1066,16 +1065,33 @@ bool MacMenu::draw(ManagedSurface *g, bool forceRedraw) {
int x = _align == kTextAlignRight ? -kMenuLeftMargin : kMenuLeftMargin;
x += it->bbox.left;
+ ManagedSurface *s = &_screen;
+ int tx = x, ty = y;
+
+ if (!it->enabled) {
+ s = &_tempSurface;
+ tx = 0;
+ ty = 0;
+ _tempSurface.clear(_wm->_colorGreen);
+ }
+
if (it->unicode) {
int accOff = _align == kTextAlignRight ? it->bbox.width() - _font->getStringWidth(it->unicodeText) : 0;
Common::UnicodeBiDiText utxt(it->unicodeText);
- _font->drawString(&_screen, utxt.visual, x, y, it->bbox.width(), color, _align, 0, true);
- underlineAccelerator(&_screen, _font, utxt, x + accOff, y, it->shortcutPos, color);
+ _font->drawString(s, utxt.visual, tx, ty, it->bbox.width(), color, _align, 0, true);
+ underlineAccelerator(s, _font, utxt, tx + accOff, ty, it->shortcutPos, color);
} else {
const Font *font = getMenuFont(it->style);
+ font->drawString(s, it->text, tx, ty, it->bbox.width(), color, Graphics::kTextAlignLeft, 0, true);
+ }
- font->drawString(&_screen, it->text, x, y, it->bbox.width(), color, Graphics::kTextAlignLeft, 0, true);
+ if (!it->enabled) {
+ if (_wm->_pixelformat.bytesPerPixel == 1) {
+ drawMenuPattern<byte>(_tempSurface, _screen, _wm->getBuiltinPatterns()[kPatternCheckers2 - 1], x, y, it->bbox.width(), _wm->_colorGreen);
+ } else {
+ drawMenuPattern<uint32>(_tempSurface, _screen, _wm->getBuiltinPatterns()[kPatternCheckers2 - 1], x, y, it->bbox.width(), _wm->_colorGreen);
+ }
}
}
@@ -1102,6 +1118,8 @@ void MacMenu::renderSubmenu(MacMenuSubMenu *menu, bool recursive) {
if (r->width() == 0 || r->height() == 0)
return;
+ bool menuEnabled = _items[_activeItem]->enabled;
+
_screen.fillRect(*r, _wm->_colorWhite);
_screen.frameRect(*r, _wm->_colorBlack);
_screen.vLine(r->right, r->top + 3, r->bottom + 1, _wm->_colorBlack);
@@ -1152,7 +1170,7 @@ void MacMenu::renderSubmenu(MacMenuSubMenu *menu, bool recursive) {
}
int color = _wm->_colorBlack;
- if (i == menu->highlight && (!text.empty() || !unicodeText.empty()) && menu->items[i]->enabled) {
+ if (i == menu->highlight && (!text.empty() || !unicodeText.empty()) && menuEnabled && menu->items[i]->enabled) {
color = _wm->_colorWhite;
Common::Rect trect(r->left, y - (_wm->_fontMan->hasBuiltInFonts() ? 1 : 0), r->right, y + _font->getFontHeight());
@@ -1163,7 +1181,7 @@ void MacMenu::renderSubmenu(MacMenuSubMenu *menu, bool recursive) {
ManagedSurface *s = &_screen;
int tx = x, ty = y;
- if (!menu->items[i]->enabled) {
+ if (!menuEnabled || !menu->items[i]->enabled) {
s = &_tempSurface;
tx = 0;
ty = 0;
@@ -1199,7 +1217,7 @@ void MacMenu::renderSubmenu(MacMenuSubMenu *menu, bool recursive) {
if (menu->items[i]->submenu != nullptr)
drawSubMenuArrow(s, arrowX, ty, color);
- if (!menu->items[i]->enabled) {
+ if (!menuEnabled || !menu->items[i]->enabled) {
if (_wm->_pixelformat.bytesPerPixel == 1) {
drawMenuPattern<byte>(_tempSurface, _screen, _wm->getBuiltinPatterns()[kPatternCheckers2 - 1], x, y, r->width(), _wm->_colorGreen);
} else {
@@ -1551,7 +1569,7 @@ bool MacMenu::mouseRelease(int x, int y) {
return false;
bool haveCallBack = false;
- if (_activeItem != -1 && _activeSubItem != -1 && _menustack.back()->items[_activeSubItem]->enabled) {
+ if (_activeItem != -1 && _activeSubItem != -1 && _items[_activeItem]->enabled && _menustack.back()->items[_activeSubItem]->enabled) {
// no action if item has submenu
if (_menustack.back()->items[_activeSubItem]->submenu) {
return false;
Commit: 67da94f03168d906bd84fa55a64f452e73b14360
https://github.com/scummvm/scummvm/commit/67da94f03168d906bd84fa55a64f452e73b14360
Author: Torbjörn Andersson (eriktorbjorn at users.sourceforge.net)
Date: 2025-01-08T20:00:45+02:00
Commit Message:
GRAPHICS: MACGUI: Disable keyboard shortcuts for disabled menus
Changed paths:
graphics/macgui/macmenu.cpp
diff --git a/graphics/macgui/macmenu.cpp b/graphics/macgui/macmenu.cpp
index e1948b34c63..815590f0581 100644
--- a/graphics/macgui/macmenu.cpp
+++ b/graphics/macgui/macmenu.cpp
@@ -1603,7 +1603,7 @@ bool MacMenu::processMenuShortCut(uint16 ascii) {
ascii = tolower(ascii);
for (uint i = 0; i < _items.size(); i++) {
- if (_items[i]->submenu != nullptr) {
+ if (_items[i]->enabled && _items[i]->submenu != nullptr) {
for (uint j = 0; j < _items[i]->submenu->items.size(); j++) {
if (_items[i]->submenu->items[j]->enabled && tolower(_items[i]->submenu->items[j]->shortcut) == ascii) {
if (_items[i]->submenu->items[j]->unicode) {
Commit: f489b4528213c592ac06b701ef68650deea80814
https://github.com/scummvm/scummvm/commit/f489b4528213c592ac06b701ef68650deea80814
Author: Torbjörn Andersson (eriktorbjorn at users.sourceforge.net)
Date: 2025-01-08T20:00:45+02:00
Commit Message:
GRAPHICS: MACGUI: Draw submenu arrow correctly on disabled menu items
Changed paths:
graphics/macgui/macmenu.cpp
diff --git a/graphics/macgui/macmenu.cpp b/graphics/macgui/macmenu.cpp
index 815590f0581..c3fcd3b1d95 100644
--- a/graphics/macgui/macmenu.cpp
+++ b/graphics/macgui/macmenu.cpp
@@ -1186,6 +1186,7 @@ void MacMenu::renderSubmenu(MacMenuSubMenu *menu, bool recursive) {
tx = 0;
ty = 0;
accelX -= x;
+ arrowX -= x;
_tempSurface.clear(_wm->_colorGreen);
}
Commit: c64c763fd2f144a71b3ee0759da5635862434f72
https://github.com/scummvm/scummvm/commit/c64c763fd2f144a71b3ee0759da5635862434f72
Author: Torbjörn Andersson (eriktorbjorn at users.sourceforge.net)
Date: 2025-01-08T20:00:45+02:00
Commit Message:
GRAPHICS: MACGUI: Don't expand disabled submenus
Changed paths:
graphics/macgui/macmenu.cpp
diff --git a/graphics/macgui/macmenu.cpp b/graphics/macgui/macmenu.cpp
index c3fcd3b1d95..e69d4b7a630 100644
--- a/graphics/macgui/macmenu.cpp
+++ b/graphics/macgui/macmenu.cpp
@@ -1237,7 +1237,7 @@ void MacMenu::renderSubmenu(MacMenuSubMenu *menu, bool recursive) {
y += _menuDropdownItemHeight;
}
- if (recursive && menu->highlight != -1 && menu->items[menu->highlight]->submenu != nullptr)
+ if (recursive && menu->highlight != -1 && _items[_activeItem]->enabled && menu->items[menu->highlight]->enabled && menu->items[menu->highlight]->submenu != nullptr)
renderSubmenu(menu->items[menu->highlight]->submenu, false);
if (_wm->_mode & kWMModalMenuMode) {
@@ -1337,7 +1337,7 @@ static void scrollCallback(void *data) {
}
bool MacMenu::mouseClick(int x, int y) {
- if (!_isModal &&_bbox.contains(x, y)) {
+ if (!_isModal && _bbox.contains(x, y)) {
for (uint i = 0; i < _items.size(); i++) {
if (_items[i]->bbox.contains(x, y)) {
if ((uint)_activeItem == i)
@@ -1383,7 +1383,7 @@ bool MacMenu::mouseClick(int x, int y) {
if (numSubItem != _activeSubItem) {
if (_wm->_mode & kWMModalMenuMode) {
- if (_activeSubItem == -1 || menu->items[_activeSubItem]->submenu != nullptr)
+ if (_activeSubItem == -1 || (_items[_activeItem]->enabled && menu->items[_activeSubItem]->enabled && menu->items[_activeSubItem]->submenu != nullptr))
g_system->copyRectToScreen(_wm->_screenCopy->getPixels(), _wm->_screenCopy->pitch, 0, 0, _wm->_screenCopy->w, _wm->_screenCopy->h);
}
@@ -1435,9 +1435,11 @@ bool MacMenu::mouseClick(int x, int y) {
}
}
- if (_activeSubItem != -1 && _menustack.back()->items[_activeSubItem]->submenu != nullptr) {
- if (_menustack.back()->items[_activeSubItem]->submenu->bbox.contains(x, y)) {
- _menustack.push_back(_menustack.back()->items[_activeSubItem]->submenu);
+ if (_activeSubItem != -1 && _items[_activeItem]->enabled) {
+ Graphics::MacMenuItem *subitem = _menustack.back()->items[_activeSubItem];
+
+ if (subitem->submenu != nullptr && subitem->enabled && subitem->submenu->bbox.contains(x, y)) {
+ _menustack.push_back(subitem->submenu);
_activeSubItem = 0;
_contentIsDirty = true;
More information about the Scummvm-git-logs
mailing list