void EXZoomController::ccTouchesMoved(CCSet *pTouches, CCEvent *pEvent){ bool multitouch = _touchesDic->count() > 1; if (multitouch) { CCArray* keys = _touchesDic->allKeys(); CCTouch *touch1 = (CCTouch*)_touchesDic->objectForKey(((CCString*)keys->objectAtIndex(0))->getCString()); CCTouch *touch2 = (CCTouch*)_touchesDic->objectForKey(((CCString*)keys->objectAtIndex(1))->getCString()); CCPoint pt1 = touch1->getLocationInView(); CCPoint pt2 = touch2->getLocationInView(); moveZoom(pt1, pt2); } else { CCArray* keys = _touchesDic->allKeys(); CCTouch *touch = (CCTouch*)_touchesDic->objectForKey(((CCString*)keys->objectAtIndex(0))->getCString()); recordScrollPoint(touch); moveScroll(_node->convertToNodeSpace(touch->getLocation())); } }
void MGuiWindow::onEvent(MWinEvent * windowEvent) { MMouse * mouse = MMouse::getInstance(); switch(windowEvent->type) { case MWIN_EVENT_WINDOW_RESIZE: if(m_pointerEvent) // send gui event { MGuiEvent guiEvent; guiEvent.type = MGUI_EVENT_RESIZE; m_pointerEvent(this, &guiEvent); } resizeScroll(); break; case MWIN_EVENT_KEY_DOWN: switch(windowEvent->data[0]) { case MKEY_TAB: { // editTexts unsigned int eSize = m_editTexts.size(); unsigned int i; // select next edit text for(i=0; i<eSize; i++) { if(m_editTexts[i]->isSingleLine() && m_editTexts[i]->isPressed()) { m_editTexts[i]->setPressed(false); m_editTexts[i]->sendVariable(); unsigned int nextId = i + 1; if(nextId >= eSize) nextId = 0; m_editTexts[nextId]->setPressed(true); m_editTexts[nextId]->setCharId(0); m_editTexts[nextId]->setSelection(0, strlen(m_editTexts[nextId]->getText())); return; } } break; } case MKEY_DOWN: { // editTexts unsigned int eSize = m_editTexts.size(); unsigned int i; // select next edit text for(i=0; i<eSize; i++) { if(m_editTexts[i]->isSingleLine() && m_editTexts[i]->isPressed()) { m_editTexts[i]->setPressed(false); m_editTexts[i]->sendVariable(); unsigned int nextId = i + 1; if(nextId >= eSize) nextId = 0; m_editTexts[nextId]->setPressed(true); m_editTexts[nextId]->setCharId(m_editTexts[i]->getCharId()); return; } } break; } case MKEY_UP: { // editTexts unsigned int eSize = m_editTexts.size(); unsigned int i; // select previous edit text for(i=0; i<eSize; i++) { if(m_editTexts[i]->isSingleLine() && m_editTexts[i]->isPressed()) { m_editTexts[i]->setPressed(false); m_editTexts[i]->sendVariable(); int nextId = i - 1; if(nextId < 0) nextId = eSize - 1; m_editTexts[nextId]->setPressed(true); m_editTexts[nextId]->setCharId(m_editTexts[i]->getCharId()); return; } } break; } } break; case MWIN_EVENT_MOUSE_WHEEL_MOVE: if(isHighLight()) moveScroll(MVector2(0, mouse->getWheelDirection() * (getTextSize() * 3))); break; case MWIN_EVENT_MOUSE_MOVE: if(isScrolled()) moveScroll(MVector2((float)mouse->getXDirection(), (float)mouse->getYDirection())); if(isMouseInside()){ setHighLight(true); if(m_pointerEvent) // send mouse move gui event { MGuiEvent guiEvent; guiEvent.type = MGUI_EVENT_MOUSE_MOVE; guiEvent.data[0] = windowEvent->data[0]; guiEvent.data[1] = windowEvent->data[1]; m_pointerEvent(this, &guiEvent); } } else{ setHighLight(false); } break; case MWIN_EVENT_MOUSE_BUTTON_DOWN: if(isHighLight()) { if(windowEvent->data[0] == MMOUSE_BUTTON_LEFT){ setPressed(true); } if(windowEvent->data[0] == MMOUSE_BUTTON_MIDDLE){ resizeScroll(); setScrolled(true); } } if(m_pointerEvent) // send mouse button down gui event { MGuiEvent guiEvent; guiEvent.type = MGUI_EVENT_MOUSE_BUTTON_DOWN; guiEvent.data[0] = windowEvent->data[0]; m_pointerEvent(this, &guiEvent); } break; case MWIN_EVENT_MOUSE_BUTTON_UP: if(windowEvent->data[0] == MMOUSE_BUTTON_MIDDLE) setScrolled(false); if(windowEvent->data[0] == MMOUSE_BUTTON_LEFT) setPressed(false); if(isHighLight()) { if(m_pointerEvent) // send mouse button up gui event { MGuiEvent guiEvent; guiEvent.type = MGUI_EVENT_MOUSE_BUTTON_UP; guiEvent.data[0] = windowEvent->data[0]; m_pointerEvent(this, &guiEvent); } } break; } internalEvent(windowEvent); }