\section{\class{wxTaskBarIcon}}\label{wxtaskbaricon}
-This class represents a Windows 95 taskbar icon, appearing in the `system tray' and responding to
-mouse clicks. An icon has an optional tooltip. This class is only supported for Windows 95/NT.
+This class represents a taskbar icon, appearing in the `system tray' and
+responding to mouse clicks. An icon has an optional tooltip. This class is only
+supported under Windows 95/NT and in X Window System ports (wxGTK, wxMotif,
+wxX11).
+
+\wxheading{X Window System Note}
+
+Under X Window System, the window manager must support either
+the \urlref{System Tray Protocol by freedesktop.org}{http://freedesktop.org/Standards/systemtray-spec}
+(WMs used by modern desktop environments such as GNOME >= 2, KDE
+>= 3 and XFCE >= 4 all do) or the older methods used in GNOME 1.2 and
+KDE 1 and 2. If it doesn't, the icon will appear as a toplevel window on
+user's desktop.
+
+Because not all window managers have system tray, there's no guarantee that
+wxTaskBarIcon will work correctly under X Window System and so the applications
+should use it only as an optional component of their user interface. The user
+should be required to explicitly enable the taskbar icon on Unix, it shouldn't
+be on by default.
+
\wxheading{Derived from}
+\helpref{wxEvtHandler}{wxevthandler}\\
\helpref{wxObject}{wxobject}
\wxheading{Include files}
<wx/taskbar.h>
+\wxheading{Event handling}
+
+To process input from a taskbar icon, use the following event handler macros to direct input to member
+functions that take a wxTaskBarIconEvent argument. Note that not all ports are
+required to send these events and so it's better to override
+\helpref{CreatePopupMenu}{wxtaskbariconcreatepopupmenu} if all that
+the application does is that it shows a popup menu in reaction to mouse click.
+
+\twocolwidtha{7cm}
+\begin{twocollist}\itemsep=0pt
+\twocolitem{{\bf EVT\_TASKBAR\_MOVE(func)}}{Process a
+wxEVT\_TASKBAR\_MOVE event.}
+\twocolitem{{\bf EVT\_TASKBAR\_LEFT\_DOWN(func)}}{Process a
+wxEVT\_TASKBAR\_LEFT\_DOWN event.}
+\twocolitem{{\bf EVT\_TASKBAR\_LEFT\_UP(func)}}{Process a
+wxEVT\_TASKBAR\_LEFT\_UP event.}
+\twocolitem{{\bf EVT\_TASKBAR\_RIGHT\_DOWN(func)}}{Process a
+wxEVT\_TASKBAR\_RIGHT\_DOWN event.}
+\twocolitem{{\bf EVT\_TASKBAR\_RIGHT\_UP(func)}}{Process a
+wxEVT\_TASKBAR\_RIGHT\_UP event.}
+\twocolitem{{\bf EVT\_TASKBAR\_LEFT\_DCLICK(func)}}{Process a
+wxEVT\_TASKBAR\_LEFT\_DCLICK event.}
+\twocolitem{{\bf EVT\_TASKBAR\_RIGHT\_DCLICK(func)}}{Process a
+wxEVT\_TASKBAR\_RIGHT\_DCLICK event.}
+\end{twocollist}%
+
\latexignore{\rtfignore{\wxheading{Members}}}
-\membersection{wxTaskBarIcon::wxTaskBarIcon}\label{wxtaskbariconconstr}
+\membersection{wxTaskBarIcon::wxTaskBarIcon}\label{wxtaskbariconctor}
\func{}{wxTaskBarIcon}{\void}
Default constructor.
-\membersection{wxTaskBarIcon::\destruct{wxTaskBarIcon}}
+\membersection{wxTaskBarIcon::\destruct{wxTaskBarIcon}}\label{wxtaskbaricondtor}
\func{}{\destruct{wxTaskBarIcon}}{\void}
Destroys the wxTaskBarIcon object, removing the icon if not already removed.
-\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}
+\membersection{wxTaskBarIcon::CreatePopupMenu}\label{wxtaskbariconcreatepopupmenu}
-Returns TRUE if the object initialized successfully.
+\func{virtual wxMenu*}{CreatePopupMenu}{\void}
-\membersection{wxTaskBarIcon::OnLButtonDown}\label{wxtaskbaricononlbuttondown}
+This method is called by the library when the user requests popup menu
+(on Windows and Unix platforms, this is when the user right-clicks the icon).
+Override this function in order to provide popup menu associated with the icon.
-\func{virtual void}{OnLButtonDown}{\void}
+If CreatePopupIcon returns NULL (this happens by default),
+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.
-Override this function to intercept left mouse button down events.
-
-\membersection{wxTaskBarIcon::OnLButtonDClick}\label{wxtaskbaricononlbuttondclick}
-
-\func{virtual void}{OnLButtonDClick}{\void}
-
-Override this function to intercept left mouse button double-click events.
-
-\membersection{wxTaskBarIcon::OnLButtonUp}\label{wxtaskbaricononlbuttonup}
-
-\func{virtual void}{OnLButtonUp}{\void}
-
-Override this function to intercept left mouse button up events.
-
-\membersection{wxTaskBarIcon::OnRButtonDown}\label{wxtaskbaricononrbuttondown}
-
-\func{virtual void}{OnRButtonDown}{\void}
+\membersection{wxTaskBarIcon::IsIconInstalled}\label{wxtaskbariconisiconinstalled}
-Override this function to intercept right mouse button down events.
+\func{bool}{IsIconInstalled}{\void}
-\membersection{wxTaskBarIcon::OnRButtonDClick}\label{wxtaskbaricononrbuttondclick}
+Returns true if \helpref{SetIcon}{wxtaskbariconseticon} was called with no subsequent \helpref{RemoveIcon}{wxtaskbariconremoveicon}.
-\func{virtual void}{OnRButtonDClick}{\void}
+\membersection{wxTaskBarIcon::IsOk}\label{wxtaskbariconisok}
-Override this function to intercept right mouse button double-click events.
+\func{bool}{IsOk}{\void}
-\membersection{wxTaskBarIcon::OnRButtonUp}\label{wxtaskbaricononrbuttonup}
+Returns true if the object initialized successfully.
-\func{virtual void}{OnRButtonUp}{\void}
+\membersection{wxTaskBarIcon::PopupMenu}\label{wxtaskbariconpopupmenu}
-Override this function to intercept right mouse button up events.
+\func{bool}{PopupMenu}{\param{wxMenu*}{ menu}}
-\membersection{wxTaskBarIcon::OnMouseMove}\label{wxtaskbaricononmousemove}
+Pops up a menu at the current mouse position. The events can be handled by
+a class derived from wxTaskBarIcon.
-\func{virtual void}{OnMouseMove}{\void}
+\wxheading{Note}
-Override this function to intercept mouse move events.
+It is recommended to override
+\helpref{CreatePopupIcon}{wxtaskbariconcreatepopupmenu}
+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}