ZVISION: Now onMouse functions handle return results and processing control list from end to beginning

This commit is contained in:
Marisa-Chan 2013-11-15 18:12:51 +00:00
parent 468c44581f
commit 677c74d59f

View File

@ -392,28 +392,31 @@ void ScriptManager::killSideFxType(SideFX::SideFXType type) {
void ScriptManager::onMouseDown(const Common::Point &screenSpacePos, const Common::Point &backgroundImageSpacePos) {
if (!_activeControls)
return;
for (ControlList::iterator iter = _activeControls->begin(); iter != _activeControls->end(); ++iter) {
(*iter)->onMouseDown(screenSpacePos, backgroundImageSpacePos);
for (ControlList::iterator iter = _activeControls->reverse_begin(); iter != _activeControls->end(); iter--) {
if ((*iter)->onMouseDown(screenSpacePos, backgroundImageSpacePos))
return;
}
}
void ScriptManager::onMouseUp(const Common::Point &screenSpacePos, const Common::Point &backgroundImageSpacePos) {
if (!_activeControls)
return;
for (ControlList::iterator iter = _activeControls->begin(); iter != _activeControls->end(); ++iter) {
(*iter)->onMouseUp(screenSpacePos, backgroundImageSpacePos);
for (ControlList::iterator iter = _activeControls->reverse_begin(); iter != _activeControls->end(); iter--) {
if ((*iter)->onMouseUp(screenSpacePos, backgroundImageSpacePos))
return;
}
}
bool ScriptManager::onMouseMove(const Common::Point &screenSpacePos, const Common::Point &backgroundImageSpacePos) {
if (!_activeControls)
return false;
bool cursorWasChanged = false;
for (ControlList::iterator iter = _activeControls->begin(); iter != _activeControls->end(); ++iter) {
cursorWasChanged = cursorWasChanged || (*iter)->onMouseMove(screenSpacePos, backgroundImageSpacePos);
for (ControlList::iterator iter = _activeControls->reverse_begin(); iter != _activeControls->end(); iter--) {
if ((*iter)->onMouseMove(screenSpacePos, backgroundImageSpacePos))
return true;
}
return cursorWasChanged;
return false;
}
void ScriptManager::onKeyDown(Common::KeyState keyState) {