[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