]> git.saurik.com Git - wxWidgets.git/blobdiff - src/unix/taskbarx11.cpp
Fix crash in wxDC::GetMultiLineTextExtent() after last commit.
[wxWidgets.git] / src / unix / taskbarx11.cpp
index 55e11e8bdfb5c23cf308e97a2caf406da3aedc4a..3b4ffeea5403d63a07c4f8d31afdac698fb96bfd 100644 (file)
@@ -21,7 +21,7 @@
 // For compilers that support precompilation, includes "wx.h".
 #include "wx/wxprec.h"
 
-#if wxUSE_TASKBARICON
+#if wxUSE_TASKBARICON && !defined(__WXGTK20__)
 
 #include "wx/taskbar.h"
 
 // base class that implements toolkit-specific method:
 // ----------------------------------------------------------------------------
 
-#ifdef __WXGTK20__
-    #include <gtk/gtk.h>
-    #if GTK_CHECK_VERSION(2,1,0)
-        #include "wx/gtk/taskbarpriv.h"
-        #define TASKBAR_ICON_AREA_BASE_INCLUDED
-    #endif
-#endif
-
-#ifndef TASKBAR_ICON_AREA_BASE_INCLUDED
     class WXDLLIMPEXP_ADV wxTaskBarIconAreaBase : public wxFrame
     {
     public:
         wxTaskBarIconAreaBase()
-            : wxFrame(NULL, wxID_ANY, _T("systray icon"),
+            : wxFrame(NULL, wxID_ANY, wxT("systray icon"),
                       wxDefaultPosition, wxDefaultSize,
                       wxDEFAULT_FRAME_STYLE | wxFRAME_NO_TASKBAR |
                       wxSIMPLE_BORDER | wxFRAME_SHAPED) {}
 
-        bool IsProtocolSupported() const { return false; }
+        static bool IsProtocolSupported() { return false; }
     };
-#endif
-
 
 // ----------------------------------------------------------------------------
 // toolkit dependent methods to set properties on helper window:
 // ----------------------------------------------------------------------------
 
 #if defined(__WXGTK__)
-    #include <gdk/gdk.h>
-    #include <gdk/gdkx.h>
     #include <gtk/gtk.h>
+    #include <gdk/gdkx.h>
     #define GetDisplay()        GDK_DISPLAY()
     #define GetXWindow(wxwin)   GDK_WINDOW_XWINDOW((wxwin)->m_widget->window)
 #elif defined(__WXX11__) || defined(__WXMOTIF__)
@@ -126,10 +114,6 @@ END_EVENT_TABLE()
 wxTaskBarIconArea::wxTaskBarIconArea(wxTaskBarIcon *icon, const wxBitmap &bmp)
     : wxTaskBarIconAreaBase(), m_icon(icon), m_bmp(bmp)
 {
-#if defined(__WXGTK20__) && defined(TASKBAR_ICON_AREA_BASE_INCLUDED)
-    m_invokingWindow = icon;
-#endif
-
     // Set initial size to bitmap size (tray manager may and often will
     // change it):
     SetClientSize(wxSize(bmp.GetWidth(), bmp.GetHeight()));
@@ -138,8 +122,8 @@ wxTaskBarIconArea::wxTaskBarIconArea(wxTaskBarIcon *icon, const wxBitmap &bmp)
 
     if (!IsProtocolSupported())
     {
-        wxLogTrace(_T("systray"),
-                   _T("using legacy KDE1,2 and GNOME 1.2 methods"));
+        wxLogTrace(wxT("systray"),
+                   wxT("using legacy KDE1,2 and GNOME 1.2 methods"));
         SetLegacyWMProperties();
     }
 }
@@ -206,7 +190,7 @@ void wxTaskBarIconArea::SetLegacyWMProperties()
 
 void wxTaskBarIconArea::OnSizeChange(wxSizeEvent& WXUNUSED(event))
 {
-    wxLogTrace(_T("systray"), _T("icon size changed to %i x %i"),
+    wxLogTrace(wxT("systray"), wxT("icon size changed to %i x %i"),
                GetSize().x, GetSize().y);
     // rescale or reposition the icon as needed:
     wxBitmap bmp(m_bmp);
@@ -250,6 +234,15 @@ void wxTaskBarIconArea::OnMenuEvent(wxCommandEvent& event)
     m_icon->ProcessEvent(event);
 }
 
+// ----------------------------------------------------------------------------
+// wxTaskBarIconBase class:
+// ----------------------------------------------------------------------------
+
+bool wxTaskBarIconBase::IsAvailable()
+{
+    return wxTaskBarIconArea::IsProtocolSupported();
+}
+
 // ----------------------------------------------------------------------------
 // wxTaskBarIcon class:
 // ----------------------------------------------------------------------------
@@ -263,7 +256,11 @@ wxTaskBarIcon::wxTaskBarIcon() : m_iconWnd(NULL)
 wxTaskBarIcon::~wxTaskBarIcon()
 {
     if (m_iconWnd)
+    {
+        m_iconWnd->Disconnect(wxEVT_DESTROY,
+            wxWindowDestroyEventHandler(wxTaskBarIcon::OnDestroy), NULL, this);
         RemoveIcon();
+    }
 }
 
 bool wxTaskBarIcon::IsOk() const