From 39f0cb547f049874baff8e4d760215842ea1ec0f Mon Sep 17 00:00:00 2001 From: Vadim Zeitlin Date: Tue, 14 Aug 2007 22:43:39 +0000 Subject: [PATCH] added wxTaskBarIcon::Destroy() git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@48076 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775 --- docs/changes.txt | 1 + docs/latex/wx/taskbar.tex | 18 ++++++++++++++++++ include/wx/taskbar.h | 3 +++ src/common/taskbarcmn.cpp | 8 ++++++++ 4 files changed, 30 insertions(+) diff --git a/docs/changes.txt b/docs/changes.txt index 5760b9fd6c..b41e293e4f 100644 --- a/docs/changes.txt +++ b/docs/changes.txt @@ -154,6 +154,7 @@ All (GUI): - Show standard options in wxCmdLineParser usage message (Francesco Montorsi). - Added wxRect::operator+ (union) and * (intersection) (bdonner). - Added support for two auxiliary mouse buttons to wxMouseEvent (Chris Weiland). +- Added wxTaskBarIcon::Destroy() wxGTK: diff --git a/docs/latex/wx/taskbar.tex b/docs/latex/wx/taskbar.tex index 125fb57333..073247e548 100644 --- a/docs/latex/wx/taskbar.tex +++ b/docs/latex/wx/taskbar.tex @@ -63,18 +63,21 @@ current platform.} \latexignore{\rtfignore{\wxheading{Members}}} + \membersection{wxTaskBarIcon::wxTaskBarIcon}\label{wxtaskbariconctor} \func{}{wxTaskBarIcon}{\void} Default constructor. + \membersection{wxTaskBarIcon::\destruct{wxTaskBarIcon}}\label{wxtaskbaricondtor} \func{}{\destruct{wxTaskBarIcon}}{\void} Destroys the wxTaskBarIcon object, removing the icon if not already removed. + \membersection{wxTaskBarIcon::CreatePopupMenu}\label{wxtaskbariconcreatepopupmenu} \func{virtual wxMenu*}{CreatePopupMenu}{\void} @@ -88,18 +91,31 @@ no menu is shown, otherwise the menu is displayed and then deleted by the library as soon as the user dismisses it. The events can be handled by a class derived from wxTaskBarIcon. + +\membersection{wxTaskBarIcon::Destroy}\label{wxtaskbaricondestroy} + +\func{void}{Destroy}{\void} + +This method is similar to \helpref{wxWindow::Destroy}{wxwindowdestroy} and can +be used to schedule the task bar icon object for the delayed destruction: it +will be deleted during the next event loop iteration, which allows the task bar +icon to process any pending events for it before being destroyed. + + \membersection{wxTaskBarIcon::IsIconInstalled}\label{wxtaskbariconisiconinstalled} \func{bool}{IsIconInstalled}{\void} Returns true if \helpref{SetIcon}{wxtaskbariconseticon} was called with no subsequent \helpref{RemoveIcon}{wxtaskbariconremoveicon}. + \membersection{wxTaskBarIcon::IsOk}\label{wxtaskbariconisok} \func{bool}{IsOk}{\void} Returns true if the object initialized successfully. + \membersection{wxTaskBarIcon::PopupMenu}\label{wxtaskbariconpopupmenu} \func{bool}{PopupMenu}{\param{wxMenu*}{ menu}} @@ -114,12 +130,14 @@ It is recommended to override callback instead of calling this method from event handler, because some ports (e.g. wxCocoa) may not implement PopupMenu and mouse click events at all. + \membersection{wxTaskBarIcon::RemoveIcon}\label{wxtaskbariconremoveicon} \func{bool}{RemoveIcon}{\void} Removes the icon previously set with \helpref{SetIcon}{wxtaskbariconseticon}. + \membersection{wxTaskBarIcon::SetIcon}\label{wxtaskbariconseticon} \func{bool}{SetIcon}{\param{const wxIcon\&}{ icon}, \param{const wxString\& }{tooltip}} diff --git a/include/wx/taskbar.h b/include/wx/taskbar.h index ab10e8b5fe..6925331730 100644 --- a/include/wx/taskbar.h +++ b/include/wx/taskbar.h @@ -35,6 +35,9 @@ public: virtual bool RemoveIcon() = 0; virtual bool PopupMenu(wxMenu *menu) = 0; + // delayed destruction (similarly to wxWindow::Destroy()) + void Destroy(); + protected: // creates menu to be displayed when user clicks on the icon virtual wxMenu *CreatePopupMenu() { return NULL; } diff --git a/src/common/taskbarcmn.cpp b/src/common/taskbarcmn.cpp index 29f39c23ee..540dddaad9 100644 --- a/src/common/taskbarcmn.cpp +++ b/src/common/taskbarcmn.cpp @@ -20,9 +20,12 @@ #ifndef WX_PRECOMP #include "wx/app.h" + #include "wx/list.h" #include "wx/menu.h" #endif +extern WXDLLIMPEXP_DATA_CORE(wxList) wxPendingDelete; + // DLL options compatibility check: WX_CHECK_BUILD_OPTIONS("wxAdvanced") @@ -51,4 +54,9 @@ void wxTaskBarIconBase::OnRightButtonDown(wxTaskBarIconEvent& WXUNUSED(event)) } } +void wxTaskBarIconBase::Destroy() +{ + wxPendingDelete.Append(this); +} + #endif // wxUSE_TASKBARICON -- 2.45.2