wxDEFAULT_FRAME_STYLE | wxFRAME_NO_TASKBAR |
wxSIMPLE_BORDER | wxFRAME_SHAPED) {}
- bool IsProtocolSupported() const { return false; }
+ static bool IsProtocolSupported() { return false; }
};
#endif
m_icon->ProcessEvent(event);
}
+// ----------------------------------------------------------------------------
+// wxTaskBarIconBase class:
+// ----------------------------------------------------------------------------
+
+bool wxTaskBarIconBase::IsAvailable()
+{
+ return wxTaskBarIconArea::IsProtocolSupported();
+}
+
// ----------------------------------------------------------------------------
// wxTaskBarIcon class:
// ----------------------------------------------------------------------------
wxTaskBarIcon::~wxTaskBarIcon()
{
if (m_iconWnd)
+ {
+ m_iconWnd->Disconnect(wxEVT_DESTROY,
+ wxWindowDestroyEventHandler(wxTaskBarIcon::OnDestroy), NULL, this);
RemoveIcon();
+ }
}
bool wxTaskBarIcon::IsOk() const
return m_iconWnd != NULL;
}
+// Destroy event from wxTaskBarIconArea
+void wxTaskBarIcon::OnDestroy(wxWindowDestroyEvent&)
+{
+ // prevent crash if wxTaskBarIconArea is destroyed by something else,
+ // for example if panel/kicker is killed
+ m_iconWnd = NULL;
+}
+
bool wxTaskBarIcon::SetIcon(const wxIcon& icon, const wxString& tooltip)
{
wxBitmap bmp;
m_iconWnd = new wxTaskBarIconArea(this, bmp);
if (m_iconWnd->IsOk())
{
+ m_iconWnd->Connect(wxEVT_DESTROY,
+ wxWindowDestroyEventHandler(wxTaskBarIcon::OnDestroy),
+ NULL, this);
m_iconWnd->Show();
}
else