From 6a3c9aae0cfe8649542794e30e7a921a0b6ae5fd Mon Sep 17 00:00:00 2001 From: David Sansome Date: Sat, 22 May 2010 14:33:17 +0000 Subject: [PATCH] Double clicking on empty space in the playlist tabbar makes a new playlist, and middle clicking a tab removes it --- src/playlist/playlisttabbar.cpp | 22 ++++++++++++++++++++++ src/playlist/playlisttabbar.h | 5 ++++- 2 files changed, 26 insertions(+), 1 deletion(-) diff --git a/src/playlist/playlisttabbar.cpp b/src/playlist/playlisttabbar.cpp index 0bd89f151..9322edc6a 100644 --- a/src/playlist/playlisttabbar.cpp +++ b/src/playlist/playlisttabbar.cpp @@ -40,6 +40,8 @@ void PlaylistTabBar::SetActions( menu_->insertAction(0, new_playlist); menu_->insertAction(0, save_playlist); menu_->insertAction(0, load_playlist); + + new_ = new_playlist; } void PlaylistTabBar::contextMenuEvent(QContextMenuEvent* e) { @@ -50,6 +52,26 @@ void PlaylistTabBar::contextMenuEvent(QContextMenuEvent* e) { menu_->popup(e->globalPos()); } +void PlaylistTabBar::mouseReleaseEvent(QMouseEvent* e) { + if (e->button() == Qt::MidButton) { + int index = tabAt(e->pos()); + if (index != -1) { + emit Remove(tabData(index).toInt()); + } + } + + QTabBar::mouseReleaseEvent(e); +} + +void PlaylistTabBar::mouseDoubleClickEvent(QMouseEvent *e) { + int index = tabAt(e->pos()); + if (index == -1) { + new_->activate(QAction::Trigger); + } + + QTabBar::mouseDoubleClickEvent(e); +} + void PlaylistTabBar::Rename() { if (menu_index_ == -1) return; diff --git a/src/playlist/playlisttabbar.h b/src/playlist/playlisttabbar.h index df858baa7..742a376e6 100644 --- a/src/playlist/playlisttabbar.h +++ b/src/playlist/playlisttabbar.h @@ -56,11 +56,14 @@ private slots: void TabMoved(); protected: - void contextMenuEvent(QContextMenuEvent *); + void contextMenuEvent(QContextMenuEvent* e); + void mouseReleaseEvent(QMouseEvent* e); + void mouseDoubleClickEvent(QMouseEvent* e); private: QMenu* menu_; int menu_index_; + QAction* new_; QAction* rename_; QAction* remove_;