[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