[Scummvm-cvs-logs] SF.net SVN: scummvm:[48791] scummvm/trunk/engines/sci/graphics
m_kiewitz at users.sourceforge.net
m_kiewitz at users.sourceforge.net
Sun Apr 25 11:35:34 CEST 2010
Revision: 48791
http://scummvm.svn.sourceforge.net/scummvm/?rev=48791&view=rev
Author: m_kiewitz
Date: 2010-04-25 09:35:34 +0000 (Sun, 25 Apr 2010)
Log Message:
-----------
SCI: fix regression of r48659 - now calculating menu width and splitting text on kernelDrawMenuBar() as well - fixes menu not displaying all the time in hoyle 1&2
Modified Paths:
--------------
scummvm/trunk/engines/sci/graphics/menu.cpp
scummvm/trunk/engines/sci/graphics/menu.h
Modified: scummvm/trunk/engines/sci/graphics/menu.cpp
===================================================================
--- scummvm/trunk/engines/sci/graphics/menu.cpp 2010-04-24 22:02:31 UTC (rev 48790)
+++ scummvm/trunk/engines/sci/graphics/menu.cpp 2010-04-25 09:35:34 UTC (rev 48791)
@@ -339,14 +339,11 @@
}
}
-// This helper calculates all text widths for all menus/items
-void GfxMenu::calculateTextWidth() {
+// This helper calculates all text widths for all menus (only)
+void GfxMenu::calculateMenuWidth() {
GuiMenuList::iterator menuIterator;
GuiMenuList::iterator menuEnd = _list.end();
GuiMenuEntry *menuEntry;
- GuiMenuItemList::iterator itemIterator;
- GuiMenuItemList::iterator itemEnd = _itemList.end();
- GuiMenuItemEntry *itemEntry;
int16 dummyHeight;
menuIterator = _list.begin();
@@ -357,7 +354,17 @@
menuIterator++;
}
+}
+// This helper calculates all text widths for all menus/items
+void GfxMenu::calculateMenuAndItemWidth() {
+ GuiMenuItemList::iterator itemIterator;
+ GuiMenuItemList::iterator itemEnd = _itemList.end();
+ GuiMenuItemEntry *itemEntry;
+ int16 dummyHeight;
+
+ calculateMenuWidth();
+
itemIterator = _itemList.begin();
while (itemIterator != itemEnd) {
itemEntry = *itemIterator;
@@ -680,7 +687,7 @@
// We don't 100% follow sierra here: we select last item instead of selecting first item of first menu everytime
// Also sierra sci didnt allow mouse interaction, when menu was activated via keyboard
- calculateTextWidth();
+ calculateMenuAndItemWidth();
_oldPort = _ports->setPort(_ports->_menuPort);
_barSaveHandle = _paint16->bitsSave(_ports->_menuRect, SCI_SCREEN_MASK_VISUAL);
@@ -801,7 +808,7 @@
bool firstMenuChange = true;
GuiMenuItemEntry *curItemEntry = NULL;
- calculateTextWidth();
+ calculateMenuAndItemWidth();
_oldPort = _ports->setPort(_ports->_menuPort);
_barSaveHandle = _paint16->bitsSave(_ports->_menuRect, SCI_SCREEN_MASK_VISUAL);
@@ -874,6 +881,7 @@
void GfxMenu::kernelDrawMenuBar(bool clear) {
if (!clear) {
Port *oldPort = _ports->setPort(_ports->_menuPort);
+ calculateMenuWidth();
drawBar();
_paint16->bitsShow(_ports->_menuBarRect);
_ports->setPort(oldPort);
Modified: scummvm/trunk/engines/sci/graphics/menu.h
===================================================================
--- scummvm/trunk/engines/sci/graphics/menu.h 2010-04-24 22:02:31 UTC (rev 48790)
+++ scummvm/trunk/engines/sci/graphics/menu.h 2010-04-25 09:35:34 UTC (rev 48791)
@@ -99,7 +99,8 @@
private:
GuiMenuItemEntry *findItem(uint16 menuId, uint16 itemId);
- void calculateTextWidth();
+ void calculateMenuWidth();
+ void calculateMenuAndItemWidth();
void drawMenu(uint16 oldMenuId, uint16 newMenuId);
void invertMenuSelection(uint16 itemId);
void interactiveShowMouse();
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
More information about the Scummvm-git-logs
mailing list