void TopMenuBar::slotMouseTracker() { QPoint cursorPos = QCursor::pos(); // reset timer if (cursorPos != m_prevCursorPos && m_hideGlowTimer->isActive()) { m_hideGlowTimer->stop(); m_hideGlowTimer->start(10000); } if (cursorInMenuBar()) { // show menubar m_mouseTracker->stop(); hideGlowBar(); show(); } else if(cursorPos != m_prevCursorPos) { // change glowbar opacity qreal opacity = glowBarOpacity(); QPropertyAnimation *anim = new QPropertyAnimation(m_glowBar, "windowOpacity"); anim->setStartValue(m_glowBar->windowOpacity()); anim->setEndValue(opacity); anim->setDuration(200); anim->start(QAbstractAnimation::DeleteWhenStopped); // Show menubar if auto hidden if (!m_glowBar->isVisible()) { m_glowBar->show(); } } m_prevCursorPos = cursorPos; }
void TopMenuBar::updateSize() { // Enable mouse tracking on resize if needed if (!m_mouseTracker->isActive() && !cursorInMenuBar()) { enableMouseTracking(); } resize(sizeHint()); }
void MenuBar::slotAboutToHide() { if (m_container->aMenuIsVisible()) { // MenuBar::m_hideTimer m_hideTimer->stop(); // menu is visible, menubar will be hidden by another aboutToHide() signal } else if (!cursorInMenuBar()) { //MenuWidget::AboutToHide signal hide(); } else if (!m_hideTimer->isActive()){ //use click on menubar button while a popup was shown m_hideTimer->start(1000); } }
void TopMenuBar::enableMouseTracking(bool enable) { if (enable) { if (!cursorInMenuBar()) { showGlowBar(); } m_mouseTracker->start(250); } else { hideGlowBar(); m_mouseTracker->stop(); } }