[Scummvm-cvs-logs] SF.net SVN: scummvm:[47278] scummvm/trunk/engines/sci/graphics/menu.cpp

m_kiewitz at users.sourceforge.net m_kiewitz at users.sourceforge.net
Tue Jan 12 21:51:48 CET 2010


Revision: 47278
          http://scummvm.svn.sourceforge.net/scummvm/?rev=47278&view=rev
Author:   m_kiewitz
Date:     2010-01-12 20:51:45 +0000 (Tue, 12 Jan 2010)

Log Message:
-----------
SCI: using _menuRect inside Menu::mouseFindMenuItemSelection for easier code, also fixed stupid oversight that made the code crash in e.g. lsl6

Modified Paths:
--------------
    scummvm/trunk/engines/sci/graphics/menu.cpp

Modified: scummvm/trunk/engines/sci/graphics/menu.cpp
===================================================================
--- scummvm/trunk/engines/sci/graphics/menu.cpp	2010-01-12 20:38:57 UTC (rev 47277)
+++ scummvm/trunk/engines/sci/graphics/menu.cpp	2010-01-12 20:51:45 UTC (rev 47278)
@@ -601,31 +601,16 @@
 }
 
 uint16 Menu::mouseFindMenuItemSelection(Common::Point mousePosition, uint16 menuId) {
-	GuiMenuEntry *listEntry;
-	GuiMenuList::iterator listIterator;
-	GuiMenuList::iterator listEnd = _list.end();
-	uint16 curXstart = 8;
-	uint16 curXend = curXstart;
 	GuiMenuItemEntry *listItemEntry;
 	GuiMenuItemList::iterator listItemIterator;
 	GuiMenuItemList::iterator listItemEnd = _itemList.end();
 	uint16 curYstart = 10;
-	int16 maxTextWidth = 0, maxTextRightAlignedWidth = 0;
 	uint16 itemId = 0;
 
 	if (!menuId)
 		error("No menu active, but mouseFindMenuItemSelection() called");
 
-	listIterator = _list.begin();
-	while (listIterator != listEnd) {
-		listEntry = *listIterator;
-		if (listEntry->id == menuId)
-			break;
-		curXstart += listEntry->textWidth;
-		listIterator++;
-	}
-
-	if (mousePosition.x < curXstart)
+	if ((mousePosition.x < _menuRect.left) || (mousePosition.x >= _menuRect.right))
 		return 0;
 
 	listItemIterator = _itemList.begin();
@@ -636,20 +621,10 @@
 			// Found it
 			if ((!itemId) && (curYstart > mousePosition.y))
 				itemId = listItemEntry->id;
-			maxTextWidth = MAX<int16>(maxTextWidth, listItemEntry->textWidth);
-			maxTextRightAlignedWidth = MAX<int16>(maxTextRightAlignedWidth, listItemEntry->textRightAlignedWidth);
 		}
 
 		listItemIterator++;
 	}
-	curXend = curXstart + 16 + 4 + 2;
-	curXend += maxTextWidth + maxTextRightAlignedWidth;
-	if (!maxTextRightAlignedWidth)
-		_menuRect.right -= 5;
-
-	// Verify that horizontal position is correct
-	if (mousePosition.x >= curXend)
-		return 0;
 	return itemId;
 }
 


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