1
mirror of https://invent.kde.org/network/falkon.git synced 2024-12-20 10:46:35 +01:00

[ComboTabBar] Fixed tabAt() on scroll buttons

This commit is contained in:
David Rosca 2014-04-19 18:47:44 +02:00
parent 7568ee3e2d
commit 6797433e39
3 changed files with 22 additions and 16 deletions

View File

@ -215,26 +215,24 @@ QRect ComboTabBar::tabRect(int index) const
int ComboTabBar::tabAt(const QPoint &pos) const
{
int index = m_pinnedTabBarWidget->tabAt(m_pinnedTabBarWidget->mapFromParent(pos));
if (!qobject_cast<TabBarHelper*>(QApplication::widgetAt(mapToGlobal(pos))))
return -1;
if (index != -1) {
int index = m_pinnedTabBarWidget->tabAt(m_pinnedTabBarWidget->mapFromParent(pos));
if (index != -1)
return index;
}
index = m_mainTabBarWidget->tabAt(m_mainTabBarWidget->mapFromParent(pos));
if (index != -1) {
if (index != -1)
index += pinnedTabsCount();
}
return index;
}
bool ComboTabBar::emptyArea(const QPoint &pos) const
{
if (tabAt(pos) != -1) {
if (tabAt(pos) != -1)
return false;
}
return qobject_cast<TabBarHelper*>(QApplication::widgetAt(mapToGlobal(pos)));
}

View File

@ -69,7 +69,12 @@ public:
void setTabTextColor(int index, const QColor &color);
QRect tabRect(int index) const;
// Returns tab index at pos, or -1
int tabAt(const QPoint &pos) const;
// Returns true if there is an empty area at pos
// (returns false if there are buttons or other widgets on the pos)
bool emptyArea(const QPoint &pos) const;
int mainTabBarCurrentIndex() const;

View File

@ -644,14 +644,17 @@ void TabBar::mouseReleaseEvent(QMouseEvent* event)
return;
}
if (event->button() == Qt::MiddleButton) {
if (emptyArea(event->pos())) {
m_tabWidget->addView(QUrl(), Qz::NT_SelectedTabAtTheEnd, true);
return;
}
int id = tabAt(event->pos());
if (id != -1 && event->button() == Qt::MiddleButton) {
if (id != -1) {
m_tabWidget->closeTab(id);
return;
}
if (id == -1 && event->button() == Qt::MiddleButton) {
m_tabWidget->addView(QUrl(), Qz::NT_SelectedTabAtTheEnd, true);
return;
}
ComboTabBar::mouseReleaseEvent(event);