Пример #1
0
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;
}
Пример #2
0
void TopMenuBar::updateSize()
{
    // Enable mouse tracking on resize if needed
    if (!m_mouseTracker->isActive() && !cursorInMenuBar()) {
        enableMouseTracking();
    }
    resize(sizeHint());
}
Пример #3
0
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);
    }
}
Пример #4
0
void TopMenuBar::enableMouseTracking(bool enable)
{
    if (enable) {
        if (!cursorInMenuBar()) {
            showGlowBar();
        }
        m_mouseTracker->start(250);
    } else {
        hideGlowBar();
        m_mouseTracker->stop();
    }
}