void TabBarWidget::contextMenuEvent(QContextMenuEvent *event) { m_clickedTab = tabAt(event->pos()); if (m_previewWidget && m_previewWidget->isVisible()) { m_previewWidget->hide(); } if (m_previewTimer > 0) { killTimer(m_previewTimer); m_previewTimer = 0; } QMenu menu(this); menu.addAction(ActionsManager::getAction(QLatin1String("NewTab"))); menu.addAction(ActionsManager::getAction(QLatin1String("NewTabPrivate"))); if (m_clickedTab >= 0) { const bool isPinned = getTabProperty(m_clickedTab, QLatin1String("isPinned"), false).toBool(); int amount = 0; for (int i = 0; i < count(); ++i) { if (getTabProperty(i, QLatin1String("isPinned"), false).toBool() || i == m_clickedTab) { continue; } ++amount; } menu.addAction(tr("Clone Tab"), this, SLOT(cloneTab()))->setEnabled(getTabProperty(m_clickedTab, QLatin1String("canClone"), false).toBool()); menu.addAction((isPinned ? tr("Unpin Tab") : tr("Pin Tab")), this, SLOT(pinTab())); menu.addSeparator(); menu.addAction(tr("Detach Tab"), this, SLOT(detachTab()))->setEnabled(count() > 1); menu.addSeparator(); if (isPinned) { QAction *closeAction = menu.addAction(QString()); ActionsManager::setupLocalAction(closeAction, QLatin1String("CloseTab"), true); closeAction->setEnabled(false); } else { menu.addAction(ActionsManager::getAction(QLatin1String("CloseTab"))); } menu.addAction(QIcon(":/icons/tab-close-other.png"), tr("Close Other Tabs"), this, SLOT(closeOther()))->setEnabled(amount > 0); } menu.exec(event->globalPos()); m_clickedTab = -1; if (underMouse()) { m_previewTimer = startTimer(250); } }
void TabBarWidget::contextMenuEvent(QContextMenuEvent *event) { m_clickedTab = tabAt(event->pos()); hidePreview(); QMenu menu(this); menu.addAction(ActionsManager::getAction(QLatin1String("NewTab"), this)); menu.addAction(ActionsManager::getAction(QLatin1String("NewTabPrivate"), this)); if (m_clickedTab >= 0) { const bool isPinned = getTabProperty(m_clickedTab, QLatin1String("isPinned"), false).toBool(); menu.addAction(tr("Clone Tab"), this, SLOT(cloneTab()))->setEnabled(getTabProperty(m_clickedTab, QLatin1String("canClone"), false).toBool()); menu.addAction((isPinned ? tr("Unpin Tab") : tr("Pin Tab")), this, SLOT(pinTab())); menu.addSeparator(); menu.addAction(tr("Detach Tab"), this, SLOT(detachTab()))->setEnabled(count() > 1); menu.addSeparator(); if (isPinned) { QAction *closeAction = menu.addAction(Utils::getIcon(QLatin1String("tab-close")), tr("Close Tab")); ActionsManager::setupLocalAction(ActionsManager::getAction(QLatin1String("CloseTab"), this), closeAction, true); closeAction->setEnabled(false); } else { menu.addAction(ActionsManager::getAction(QLatin1String("CloseTab"), this)); } const int amount = (count() - getPinnedTabsAmount()); menu.addAction(Utils::getIcon(QLatin1String("tab-close-other")), tr("Close Other Tabs"), this, SLOT(closeOther()))->setEnabled(amount > 0 && !(amount == 1 && !isPinned)); } menu.exec(event->globalPos()); m_clickedTab = -1; if (underMouse()) { m_previewTimer = startTimer(250); } }