From e903ebda5506ea536a9954ae828ae6757ad66d76 Mon Sep 17 00:00:00 2001 From: Bryan Petty Date: Wed, 10 Sep 2014 14:53:47 +0000 Subject: [PATCH] Reset progress state to no progress when destructing. Author: Chaobin Zhang git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@77615 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775 --- include/wx/taskbarbutton.h | 32 ++++++++++++------------- samples/taskbarbutton/taskbarbutton.cpp | 4 ++-- src/msw/taskbarbutton.cpp | 5 ++++ 3 files changed, 23 insertions(+), 18 deletions(-) diff --git a/include/wx/taskbarbutton.h b/include/wx/taskbarbutton.h index 5c3c1ff110..19f9b3f833 100644 --- a/include/wx/taskbarbutton.h +++ b/include/wx/taskbarbutton.h @@ -130,6 +130,22 @@ private: wxDECLARE_NO_COPY_CLASS(wxTaskBarButton); }; +class WXDLLIMPEXP_CORE wxAppProgressIndicator +{ +public: + wxAppProgressIndicator(wxTopLevelWindow *parent, int maxValue); + virtual ~wxAppProgressIndicator(); + bool Update(int value); + bool Pulse(); + +private: + void Init(); + + wxTopLevelWindow *m_parent; + int m_maxValue; + wxScopedPtr m_taskBarButton; +}; + enum WXDLLIMPEXP_CORE wxJumpListItemType { wxJUMP_LIST_SEPARATOR, wxJUMP_LIST_TASK, @@ -172,22 +188,6 @@ private: int m_iconIndex; }; -class WXDLLIMPEXP_CORE wxAppProgressIndicator -{ -public: - wxAppProgressIndicator(wxTopLevelWindow *parent, int maxValue); - virtual ~wxAppProgressIndicator() { } - bool Update(int value); - bool Pulse(); - -private: - void Init(); - - wxTopLevelWindow *m_parent; - int m_maxValue; - wxScopedPtr m_taskBarButton; -}; - typedef wxVector wxJumpListItems; class WXDLLIMPEXP_CORE wxJumpList diff --git a/samples/taskbarbutton/taskbarbutton.cpp b/samples/taskbarbutton/taskbarbutton.cpp index f703ac6cb2..1847ee545d 100644 --- a/samples/taskbarbutton/taskbarbutton.cpp +++ b/samples/taskbarbutton/taskbarbutton.cpp @@ -422,7 +422,7 @@ void MyFrame::OnShowProgressDialog(wxCommandEvent& WXUNUSED(event)) NULL, wxPD_AUTO_HIDE ); - wxAppProgressIndicator indicator(&dlg, PROGRESS_COUNT); + wxAppProgressIndicator indicator(this, PROGRESS_COUNT); for ( int i = 0; i <= PROGRESS_COUNT; i++ ) { if ( !dlg.Update(i) ) @@ -442,7 +442,7 @@ void MyFrame::OnPulseProgressDialog(wxCommandEvent& WXUNUSED(event)) NULL, wxPD_AUTO_HIDE ); - wxAppProgressIndicator indicator(&dlg, PROGRESS_COUNT); + wxAppProgressIndicator indicator(this, PROGRESS_COUNT); for ( int i = 0; i <= PROGRESS_COUNT; i++ ) { if ( !dlg.Pulse() ) diff --git a/src/msw/taskbarbutton.cpp b/src/msw/taskbarbutton.cpp index 3fd42c21fb..36df6aa38a 100644 --- a/src/msw/taskbarbutton.cpp +++ b/src/msw/taskbarbutton.cpp @@ -706,6 +706,11 @@ wxAppProgressIndicator::wxAppProgressIndicator(wxTopLevelWindow *parent, int max { } +wxAppProgressIndicator::~wxAppProgressIndicator() +{ + m_taskBarButton->SetProgressState(wxTASKBAR_BUTTON_NO_PROGRESS); +} + bool wxAppProgressIndicator::Update(int value) { wxASSERT_MSG( value <= m_maxValue, wxT("invalid progress value") );