-#if !USE_SHARED_LIBRARY
-BEGIN_EVENT_TABLE(wxTaskBarIcon, wxEvtHandler)
- EVT_TASKBAR_MOVE (wxTaskBarIcon::_OnMouseMove)
- EVT_TASKBAR_LEFT_DOWN (wxTaskBarIcon::_OnLButtonDown)
- EVT_TASKBAR_LEFT_UP (wxTaskBarIcon::_OnLButtonUp)
- EVT_TASKBAR_RIGHT_DOWN (wxTaskBarIcon::_OnRButtonDown)
- EVT_TASKBAR_RIGHT_UP (wxTaskBarIcon::_OnRButtonUp)
- EVT_TASKBAR_LEFT_DCLICK (wxTaskBarIcon::_OnLButtonDClick)
- EVT_TASKBAR_RIGHT_DCLICK (wxTaskBarIcon::_OnRButtonDClick)
-END_EVENT_TABLE()
+// NB: this class serves two purposes:
+// 1. win32 needs a HWND associated with taskbar icon, this provides it
+// 2. we need wxTopLevelWindow so that the app doesn't exit when
+// last frame is closed but there still is a taskbar icon
+class wxTaskBarIconWindow : public wxFrame
+{
+public:
+ wxTaskBarIconWindow(wxTaskBarIcon *icon)
+ : wxFrame(NULL, wxID_ANY, wxEmptyString, wxDefaultPosition, wxDefaultSize, 0),
+ m_icon(icon)
+ {
+ }
+
+ WXLRESULT MSWWindowProc(WXUINT msg,
+ WXWPARAM wParam, WXLPARAM lParam)
+ {
+ if (msg == gs_msgRestartTaskbar || msg == gs_msgTaskbar)
+ {
+ return m_icon->WindowProc(msg, wParam, lParam);
+ }
+ else
+ {
+ return wxFrame::MSWWindowProc(msg, wParam, lParam);
+ }
+ }