#include "wx/taskbar.h"
#include "wx/dynlib.h"
+#ifndef NIN_BALLOONTIMEOUT
+ #define NIN_BALLOONTIMEOUT 0x0404
+ #define NIN_BALLOONUSERCLICK 0x0405
+#endif
+
+#ifndef NIM_SETVERSION
+ #define NIM_SETVERSION 0x00000004
+#endif
+
+#ifndef NIF_INFO
+ #define NIF_INFO 0x00000010
+#endif
+
+
// initialized on demand
static UINT gs_msgTaskbar = 0;
static UINT gs_msgRestartTaskbar = 0;
wxTaskBarIcon::~wxTaskBarIcon()
{
- if (m_iconAdded)
+ if ( m_iconAdded )
RemoveIcon();
- if (m_win)
- m_win->Destroy();
+ if ( m_win )
+ {
+ // we must use delete and not Destroy() here because the latter will
+ // only schedule the window to be deleted during the next idle event
+ // processing but we may not get any idle events if there are no other
+ // windows left in the program
+ delete m_win;
+ }
}
// Operations
return ok;
}
+#if wxUSE_TASKBARICON_BALLOONS
+
bool
wxTaskBarIcon::ShowBalloon(const wxString& title,
const wxString& text,
return wxShellNotifyIcon(NIM_MODIFY, ¬ifyData) != 0;
}
+#endif // wxUSE_TASKBARICON_BALLOONS
+
bool wxTaskBarIcon::RemoveIcon()
{
if (!m_iconAdded)