void UI_Main::showQuickMenu( bool show ) { quickMenuVisible = show; if( !show ) { cancelTouches( UI_CONTEXT_QUICK ); } }
void UI_Main::showUI( bool show ) { // only disable menu if not forced to display it if( !show && forceMenu ) { return; } menuVisible = show; trap::CL_SetKeyDest( show ? key_menu : key_game ); if( !show ) { cancelTouches( UI_CONTEXT_MAIN ); UI_Navigation &navigation = navigations[UI_CONTEXT_MAIN]; NavigationStack *navigator = navigation.front(); for( UI_Navigation::iterator it = navigation.begin(); it != navigation.end(); ++it ) { NavigationStack *stack = *it; if( stack->isTopModal() ) { stack->popDocument(); } if( stack == navigator ) { stack->popAllDocuments(); } } rocketModule->hideCursor( UI_CONTEXT_MAIN, RocketModule::HIDECURSOR_REFRESH, 0 ); } }
void UI_Main::showUI( bool show ) { // only disable menu if not forced to display it if( !show && forceMenu ) return; menuVisible = show; trap::CL_SetKeyDest( show ? key_menu : key_game ); if( !show ) { cancelTouches( UI_CONTEXT_MAIN ); UI_Navigation &navigation = navigations[UI_CONTEXT_MAIN]; NavigationStack *navigator = navigation.front(); navigator->popAllDocuments(); rocketModule->hideCursor( UI_CONTEXT_MAIN, RocketModule::HIDECURSOR_REFRESH, 0 ); } }
bool RocketModule::touchEvent( int contextId, int id, touchevent_t type, int x, int y ) { auto &contextTouch = contextsTouch[contextId]; auto *context = contextForId( contextId ); if( ( type == TOUCH_DOWN ) && ( contextTouch.id < 0 ) ) { if( contextId == UI_CONTEXT_QUICK ) { Rocket::Core::Vector2f position( (float)x, (float)y ); Element *element = context->GetElementAtPoint( position ); if( !element || element->GetTagName() == "body" ) { return false; } } contextTouch.id = id; contextTouch.origin.x = x; contextTouch.origin.y = y; contextTouch.y = y; contextTouch.scroll = false; } if( id != contextTouch.id ) { return false; } UI_Main::Get()->mouseMove( contextId, x, y, true, false ); if( type == TOUCH_DOWN ) { context->ProcessMouseButtonDown( 0, KeyConverter::getModifiers() ); } else { int delta = contextTouch.y - y; if( delta ) { if( !contextTouch.scroll ) { int threshold = 32 * ( renderInterface->GetPixelsPerInch() / renderInterface->GetBasePixelsPerInch() ); if( abs( delta ) > threshold ) { contextTouch.scroll = true; contextTouch.y += ( ( delta < 0 ) ? threshold : -threshold ); delta = contextTouch.y - y; } } if( contextTouch.scroll ) { Element *focusElement = context->GetFocusElement(); if( !focusElement || ( focusElement->GetTagName() != "keyselect" ) ) { Element *element; for( element = context->GetElementAtPoint( contextTouch.origin ); element; element = element->GetParentNode() ) { if( element->GetTagName() == "scrollbarvertical" ) { break; } int overflow = element->GetProperty< int >( "overflow-y" ); if( ( overflow != Rocket::Core::OVERFLOW_AUTO ) && ( overflow != Rocket::Core::OVERFLOW_SCROLL ) ) { continue; } int scrollTop = element->GetScrollTop(); if( ( ( delta < 0 ) && ( scrollTop > 0 ) ) || ( ( delta > 0 ) && ( element->GetScrollHeight() > scrollTop + element->GetClientHeight() ) ) ) { element->SetScrollTop( element->GetScrollTop() + delta ); break; } } } contextTouch.y = y; } } if( type == TOUCH_UP ) { cancelTouches( contextId ); } } return true; }