void Background::MouseLDoubleClickInside(aui_MouseEvent *data) { if (IsDisabled()) return; if (GetWhichSeesMouse() && GetWhichSeesMouse() != this) return; SetWhichSeesMouse(this); Assert(g_tiledMap != NULL); if (g_tiledMap == NULL) return; data->position.x -= X(); data->position.y -= Y(); if (s_savedEvents.GetCount() > 0) { SavedMouseEvent *ev = s_savedEvents.GetTail(); if(ev->type == SEV_LGRAB) { ev->type = SEV_LDOUBLE; memcpy(&ev->event, data, sizeof(aui_MouseEvent)); } else { ev = new SavedMouseEvent; memcpy(&ev->event, data, sizeof(aui_MouseEvent)); ev->type = SEV_LDOUBLE; s_savedEvents.AddTail(ev); } } else { g_tiledMap->Click(data, TRUE); } m_lbutton_isdown = TRUE; }
AUI_ERRCODE Background::Idle(void) { if(g_tiledMap) { g_tiledMap->Idle(); } while(s_savedEvents.GetCount() > 0) { SavedMouseEvent *ev = s_savedEvents.GetHead(); switch(ev->type) { case SEV_LGRAB: { uint32 curTicks = GetTickCount(); if (curTicks > (ev->event.time + doubleClickTimeout)) { g_tiledMap->Click(&ev->event, FALSE); } else { return AUI_ERRCODE_OK; } break; } case SEV_RGRAB: g_tiledMap->Click(&ev->event, FALSE); break; case SEV_LDROP: g_tiledMap->Drop(&ev->event); break; case SEV_LDRAG: g_tiledMap->MouseDrag(&ev->event); break; case SEV_LDOUBLE: g_tiledMap->Click(&ev->event, TRUE); break; } delete s_savedEvents.RemoveHead(); } #if 0 if (hasSavedEvent) { uint32 curTicks = GetTickCount(); if (curTicks > (savedEvent.time + doubleClickTimeout)) { g_tiledMap->Click(&savedEvent, FALSE); hasSavedEvent = FALSE; } } #endif return AUI_ERRCODE_OK; }