bool TreentNode::deepTouchesEnded( ci::app::TouchEvent &event ) { bool captured = false; auto gui_component = component<GuiComponent>(); if( gui_component ) captured = gui_component->touchesEnded( event, getWorldTransform() ); for( TreentNodeRef &child : mChildren ) { // stop evaluation if event was captured by self or a child if( captured ) break; captured = child->deepTouchesEnded( event ); } return captured; }
bool Node::treeTouchesEnded( ci::app::TouchEvent event ) { if(!mIsVisible) return false; // test children first, from top to bottom NodeList nodes(mChildren); NodeList::reverse_iterator itr; bool handled = false; for(itr=nodes.rbegin(); itr!=nodes.rend()&&!handled; ++itr) (*itr)->treeTouchesEnded(event); // don't care about 'handled' for now // if not handled, test this node if(!handled) handled = touchesEnded(event); return handled; }
void CCTouchDispatcher::OnPointerOff(const InputPointerEvent* evt) { map<Ref<InputPointer>, CCTouch*>::type::iterator itr = m_Touches.find(evt->getSource()); if (itr == m_Touches.end()) return; CCSet set; CCTouch* pTouch = itr->second; m_Touches.erase(itr); pTouch->SetTouchInfo(0, evt->getPos().x, evt->getPos().y); set.addObject(pTouch); // LOG(0, ".. off %.3f %.3f\n", evt->GetPos().x, evt->GetPos().y); touchesEnded(&set); pTouch->release(); }
void CoreInput::setMouseButtonState(int mouseButton, bool state, int ticks) { InputEvent *evt = new InputEvent(mousePosition, ticks); evt->mouseButton = mouseButton; if(state) dispatchEvent(evt, InputEvent::EVENT_MOUSEDOWN); else dispatchEvent(evt, InputEvent::EVENT_MOUSEUP); mouseButtons[mouseButton] = state; if(simulateTouchWithMouse && mouseButton == MOUSE_BUTTON1) { TouchInfo touch; touch.position = mousePosition; touch.id = 0; std::vector<TouchInfo> touches; touches.push_back(touch); if(state) { touchesBegan(touch, touches, ticks); } else { touchesEnded(touch, touches, ticks); } } }
bool wyPageControl::touchesCancelled(wyMotionEvent& e) { return touchesEnded(e); }