From 82a3c84bf6b61a6878aebfcb05181acf142fe033 Mon Sep 17 00:00:00 2001 From: Arnaud Bienner Date: Sun, 29 Jul 2012 03:11:00 +0200 Subject: [PATCH] Create the playlistiem_actions separator only once (to avoid a memory leak introduced in revision a38be50b0058: as the actions are supposed to be owned by the internet service, the separator action added in main window wasn't deleted). --- src/ui/mainwindow.cpp | 12 +++++------- src/ui/mainwindow.h | 1 + 2 files changed, 6 insertions(+), 7 deletions(-) diff --git a/src/ui/mainwindow.cpp b/src/ui/mainwindow.cpp index 566e796cf..559b78775 100644 --- a/src/ui/mainwindow.cpp +++ b/src/ui/mainwindow.cpp @@ -183,6 +183,7 @@ MainWindow::MainWindow(Application* app, #endif playlist_menu_(new QMenu(this)), playlist_add_to_another_(NULL), + playlistitem_actions_separator_(NULL), library_sort_model_(new QSortFilterProxyModel(this)), track_position_timer_(new QTimer(this)), was_maximized_(false), @@ -491,6 +492,7 @@ MainWindow::MainWindow(Application* app, playlist_delete_ = playlist_menu_->addAction(IconLoader::Load("edit-delete"), tr("Delete from disk..."), this, SLOT(PlaylistDelete())); playlist_open_in_browser_ = playlist_menu_->addAction(IconLoader::Load("document-open-folder"), tr("Show in file browser..."), this, SLOT(PlaylistOpenInBrowser())); playlist_menu_->addSeparator(); + playlistitem_actions_separator_ = playlist_menu_->addSeparator(); playlist_menu_->addAction(ui_->action_clear_playlist); playlist_menu_->addAction(ui_->action_shuffle); playlist_menu_->addAction(ui_->action_remove_duplicates); @@ -1342,13 +1344,9 @@ void MainWindow::PlaylistRightClick(const QPoint& global_pos, const QModelIndex& } // Get the new item actions, and add them - QList new_playlistitem_actions = item->actions(); - if (!new_playlistitem_actions.isEmpty()) { - QAction* separator = playlist_menu_->insertSeparator(ui_->action_clear_playlist); - playlist_menu_->insertActions(separator, new_playlistitem_actions); - new_playlistitem_actions << separator; - } - playlistitem_actions_ = new_playlistitem_actions; + playlistitem_actions_ = item->actions(); + playlistitem_actions_separator_->setVisible(!playlistitem_actions_.isEmpty()); + playlist_menu_->insertActions(playlistitem_actions_separator_, playlistitem_actions_); } //if it isn't the first time we right click, we need to remove the menu previously created diff --git a/src/ui/mainwindow.h b/src/ui/mainwindow.h index 2adeaeb06..0b0535d92 100644 --- a/src/ui/mainwindow.h +++ b/src/ui/mainwindow.h @@ -322,6 +322,7 @@ class MainWindow : public QMainWindow, public PlatformInterface { QAction* playlist_queue_; QAction* playlist_add_to_another_; QList playlistitem_actions_; + QAction* playlistitem_actions_separator_; QModelIndex playlist_menu_index_; QSortFilterProxyModel* library_sort_model_;