void TopWindow::onTooltipChange( const CtrlGeneric &rCtrl ) { // Check that the control is the active one if( m_pLastHitControl && m_pLastHitControl == &rCtrl ) { // Set the tooltip text variable VarManager *pVarManager = VarManager::instance( getIntf() ); pVarManager->getTooltipText().set( rCtrl.getTooltipText() ); } }
void TopWindow::onTooltipChange( const CtrlGeneric &rCtrl ) { // Check that the control is the active one if( m_pLastHitControl && m_pLastHitControl == &rCtrl ) { if( rCtrl.getTooltipText().size() ) { // Set the tooltip text variable VarManager *pVarManager = VarManager::instance( getIntf() ); pVarManager->getTooltipText().set( rCtrl.getTooltipText() ); m_rWindowManager.showTooltip(); } else { // Nothing to display, so hide the tooltip m_rWindowManager.hideTooltip(); } } }
CtrlGeneric *TopWindow::findHitControl( int xPos, int yPos ) { if( m_pActiveLayout == NULL ) { return NULL; } // Get the controls in the active layout const list<LayeredControl> &ctrlList = m_pActiveLayout->getControlList(); list<LayeredControl>::const_reverse_iterator iter; // New control hit by the mouse CtrlGeneric *pNewHitControl = NULL; // Loop on the control list to find the uppest hit control for( iter = ctrlList.rbegin(); iter != ctrlList.rend(); iter++ ) { // Get the position of the control in the layout const Position *pos = (*iter).m_pControl->getPosition(); if( pos != NULL ) { // Compute the coordinates of the mouse relative to the control int xRel = xPos - pos->getLeft(); int yRel = yPos - pos->getTop(); CtrlGeneric *pCtrl = (*iter).m_pControl; // Control hit ? if( pCtrl->isVisible() && pCtrl->mouseOver( xRel, yRel ) ) { pNewHitControl = (*iter).m_pControl; break; } } else { msg_Dbg( getIntf(), "Control at NULL position" ); } } // If the hit control has just been entered, send it an enter event if( pNewHitControl && (pNewHitControl != m_pLastHitControl) ) { // Don't send the event if another control captured the mouse if( !m_pCapturingControl || (m_pCapturingControl == pNewHitControl ) ) { EvtEnter evt( getIntf() ); pNewHitControl->handleEvent( evt ); if( !m_pCapturingControl ) { // Show the tooltip m_rWindowManager.hideTooltip(); UString tipText = pNewHitControl->getTooltipText(); if( tipText.length() > 0 ) { // Set the tooltip text variable VarManager *pVarManager = VarManager::instance( getIntf() ); pVarManager->getTooltipText().set( tipText ); m_rWindowManager.showTooltip(); } } } } return pNewHitControl; }