From 81c26b4dd3c3d11471bacfe7a4a83d2a8edac751 Mon Sep 17 00:00:00 2001 From: Chris Xiong Date: Mon, 2 Dec 2019 11:55:52 +0800 Subject: No more creepy blank action buttons that cause crashes if clicked. If a plugin has been removed and the toolbar is reconfigured afterwards, a blank button will appear in the toolbar, which will cause a crash when clicked. --- qmidiplayer-desktop/qmpcustomizewindow.cpp | 1 + qmidiplayer-desktop/qmpmainwindow.cpp | 5 ++--- qmidiplayer-desktop/qmpmainwindow.hpp | 6 +++--- 3 files changed, 6 insertions(+), 6 deletions(-) diff --git a/qmidiplayer-desktop/qmpcustomizewindow.cpp b/qmidiplayer-desktop/qmpcustomizewindow.cpp index b7017b7..a2ff19c 100644 --- a/qmidiplayer-desktop/qmpcustomizewindow.cpp +++ b/qmidiplayer-desktop/qmpcustomizewindow.cpp @@ -44,6 +44,7 @@ void qmpCustomizeWindow::launch(int w) std::set s; for(auto i=v.begin();i!=v.end();++i) { + if(m.find(*i)==m.end())continue; s.insert(*i); QListWidgetItem* it=new QListWidgetItem( m[*i].icon(), diff --git a/qmidiplayer-desktop/qmpmainwindow.cpp b/qmidiplayer-desktop/qmpmainwindow.cpp index 1715539..1df2d8e 100644 --- a/qmidiplayer-desktop/qmpmainwindow.cpp +++ b/qmidiplayer-desktop/qmpmainwindow.cpp @@ -625,10 +625,9 @@ void qmpMainWindow::setupWidget() i->second.setAssignedControl((QReflectiveAction*)nullptr), i->second.setAssignedControl((QReflectivePushButton*)nullptr); QListw=ui->buttonwidget->findChildren("",Qt::FindDirectChildrenOnly); - for(unsigned i=0;ia=ui->lbFileName->actions(); - for(unsigned i=0;ilbFileName->removeAction(a[i]); delete a[i]; diff --git a/qmidiplayer-desktop/qmpmainwindow.hpp b/qmidiplayer-desktop/qmpmainwindow.hpp index ea5209c..c8f3827 100644 --- a/qmidiplayer-desktop/qmpmainwindow.hpp +++ b/qmidiplayer-desktop/qmpmainwindow.hpp @@ -86,12 +86,12 @@ class QReflectivePushButton:public QPushButton class qmpFuncPrivate { private: - qmpFuncBaseIntf* _i; + qmpFuncBaseIntf* _i=nullptr; QIcon _icon; std::string des; bool _checkable,checked; - QReflectiveAction* asgna; - QReflectivePushButton* asgnb; + QReflectiveAction* asgna=nullptr; + QReflectivePushButton* asgnb=nullptr; public: qmpFuncPrivate(){} qmpFuncPrivate(qmpFuncBaseIntf* i,std::string _desc,const char* icon,int iconlen,bool checkable); -- cgit v1.2.3