]> git.saurik.com Git - wxWidgets.git/blobdiff - src/unix/taskbarx11.cpp
check that the version of __sync_sub_and_fetch that returns a value is supported...
[wxWidgets.git] / src / unix / taskbarx11.cpp
index 4f8040c809943d194c266cb0a168cb81e3ee19a8..06118f3109a40061e0ecac2c0fa58eed18fe5232 100644 (file)
@@ -1,5 +1,5 @@
 /////////////////////////////////////////////////////////////////////////
 /////////////////////////////////////////////////////////////////////////
-// File:        taskbar.cpp
+// File:        src/unix/taskbarx11.cpp
 // Purpose:     wxTaskBarIcon class for common Unix desktops
 // Author:      Vaclav Slavik
 // Modified by:
 // Purpose:     wxTaskBarIcon class for common Unix desktops
 // Author:      Vaclav Slavik
 // Modified by:
 // For compilers that support precompilation, includes "wx.h".
 #include "wx/wxprec.h"
 
 // For compilers that support precompilation, includes "wx.h".
 #include "wx/wxprec.h"
 
+#if wxUSE_TASKBARICON
+
 #include "wx/taskbar.h"
 #include "wx/taskbar.h"
-#include "wx/frame.h"
-#include "wx/bitmap.h"
-#include "wx/statbmp.h"
-#include "wx/sizer.h"
-#include "wx/dcclient.h"
-#include "wx/log.h"
-#include "wx/image.h"
+
+#ifndef  WX_PRECOMP
+    #include "wx/log.h"
+    #include "wx/frame.h"
+    #include "wx/dcclient.h"
+    #include "wx/statbmp.h"
+    #include "wx/sizer.h"
+    #include "wx/bitmap.h"
+    #include "wx/image.h"
+#endif
 
 #ifdef __VMS
 #pragma message disable nosimpint
 
 #ifdef __VMS
 #pragma message disable nosimpint
@@ -84,7 +89,7 @@
     #error "You must define X11 accessors for this port!"
 #endif
 
     #error "You must define X11 accessors for this port!"
 #endif
 
-    
+
 // ----------------------------------------------------------------------------
 // wxTaskBarIconArea is the real window that shows the icon:
 // ----------------------------------------------------------------------------
 // ----------------------------------------------------------------------------
 // wxTaskBarIconArea is the real window that shows the icon:
 // ----------------------------------------------------------------------------
@@ -95,10 +100,10 @@ public:
     wxTaskBarIconArea(wxTaskBarIcon *icon, const wxBitmap &bmp);
     void SetTrayIcon(const wxBitmap& bmp);
     bool IsOk() { return true; }
     wxTaskBarIconArea(wxTaskBarIcon *icon, const wxBitmap &bmp);
     void SetTrayIcon(const wxBitmap& bmp);
     bool IsOk() { return true; }
-    
+
 protected:
     void SetLegacyWMProperties();
 protected:
     void SetLegacyWMProperties();
-    
+
     void OnSizeChange(wxSizeEvent& event);
     void OnPaint(wxPaintEvent& evt);
     void OnMouseEvent(wxMouseEvent& event);
     void OnSizeChange(wxSizeEvent& event);
     void OnPaint(wxPaintEvent& evt);
     void OnMouseEvent(wxMouseEvent& event);
@@ -107,44 +112,44 @@ protected:
     wxTaskBarIcon *m_icon;
     wxPoint        m_pos;
     wxBitmap       m_bmp;
     wxTaskBarIcon *m_icon;
     wxPoint        m_pos;
     wxBitmap       m_bmp;
-    
+
     DECLARE_EVENT_TABLE()
 };
 
 BEGIN_EVENT_TABLE(wxTaskBarIconArea, wxTaskBarIconAreaBase)
     EVT_SIZE(wxTaskBarIconArea::OnSizeChange)
     EVT_MOUSE_EVENTS(wxTaskBarIconArea::OnMouseEvent)
     DECLARE_EVENT_TABLE()
 };
 
 BEGIN_EVENT_TABLE(wxTaskBarIconArea, wxTaskBarIconAreaBase)
     EVT_SIZE(wxTaskBarIconArea::OnSizeChange)
     EVT_MOUSE_EVENTS(wxTaskBarIconArea::OnMouseEvent)
-    EVT_MENU(-1, wxTaskBarIconArea::OnMenuEvent)
+    EVT_MENU(wxID_ANY, wxTaskBarIconArea::OnMenuEvent)
     EVT_PAINT(wxTaskBarIconArea::OnPaint)
 END_EVENT_TABLE()
     EVT_PAINT(wxTaskBarIconArea::OnPaint)
 END_EVENT_TABLE()
-        
+
 wxTaskBarIconArea::wxTaskBarIconArea(wxTaskBarIcon *icon, const wxBitmap &bmp)
 wxTaskBarIconArea::wxTaskBarIconArea(wxTaskBarIcon *icon, const wxBitmap &bmp)
-    : wxTaskBarIconAreaBase(), m_icon(icon), m_pos(0,0)
+    : wxTaskBarIconAreaBase(), m_icon(icon), m_bmp(bmp)
 {
 {
-    if (!IsProtocolSupported())
-    {
-        wxLogTrace(_T("systray"),
-                   _T("using legacy KDE1,2 and GNOME 1.2 methods"));
-        SetLegacyWMProperties();
-    }
-
 #if defined(__WXGTK20__) && defined(TASKBAR_ICON_AREA_BASE_INCLUDED)
     m_invokingWindow = icon;
 #endif
 #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):
     // Set initial size to bitmap size (tray manager may and often will
     // change it):
-    SetSize(wxSize(bmp.GetWidth(), bmp.GetHeight()));
-    
+    SetClientSize(wxSize(bmp.GetWidth(), bmp.GetHeight()));
+
     SetTrayIcon(bmp);
     SetTrayIcon(bmp);
+
+    if (!IsProtocolSupported())
+    {
+        wxLogTrace(_T("systray"),
+                   _T("using legacy KDE1,2 and GNOME 1.2 methods"));
+        SetLegacyWMProperties();
+    }
 }
 
 void wxTaskBarIconArea::SetTrayIcon(const wxBitmap& bmp)
 {
     m_bmp = bmp;
 }
 
 void wxTaskBarIconArea::SetTrayIcon(const wxBitmap& bmp)
 {
     m_bmp = bmp;
-    
+
     // determine suitable bitmap size:
     // determine suitable bitmap size:
-    wxSize winsize(GetSize());
+    wxSize winsize(GetClientSize());
     wxSize bmpsize(m_bmp.GetWidth(), m_bmp.GetHeight());
     wxSize iconsize(wxMin(winsize.x, bmpsize.x), wxMin(winsize.y, bmpsize.y));
 
     wxSize bmpsize(m_bmp.GetWidth(), m_bmp.GetHeight());
     wxSize iconsize(wxMin(winsize.x, bmpsize.x), wxMin(winsize.y, bmpsize.y));
 
@@ -173,13 +178,13 @@ void wxTaskBarIconArea::SetTrayIcon(const wxBitmap& bmp)
 }
 
 void wxTaskBarIconArea::SetLegacyWMProperties()
 }
 
 void wxTaskBarIconArea::SetLegacyWMProperties()
-{ 
+{
 #ifdef __WXGTK__
     gtk_widget_realize(m_widget);
 #endif
 #ifdef __WXGTK__
     gtk_widget_realize(m_widget);
 #endif
-    
+
     long data[1];
     long data[1];
-    
+
     // KDE 2 & KDE 3:
     Atom _KDE_NET_WM_SYSTEM_TRAY_WINDOW_FOR =
         XInternAtom(GetDisplay(), "_KDE_NET_WM_SYSTEM_TRAY_WINDOW_FOR", False);
     // KDE 2 & KDE 3:
     Atom _KDE_NET_WM_SYSTEM_TRAY_WINDOW_FOR =
         XInternAtom(GetDisplay(), "_KDE_NET_WM_SYSTEM_TRAY_WINDOW_FOR", False);
@@ -198,8 +203,8 @@ void wxTaskBarIconArea::SetLegacyWMProperties()
                     KWM_DOCKWINDOW, 32,
                     PropModeReplace, (unsigned char*)data, 1);
 }
                     KWM_DOCKWINDOW, 32,
                     PropModeReplace, (unsigned char*)data, 1);
 }
-    
-void wxTaskBarIconArea::OnSizeChange(wxSizeEvent& event)
+
+void wxTaskBarIconArea::OnSizeChange(wxSizeEvent& WXUNUSED(event))
 {
     wxLogTrace(_T("systray"), _T("icon size changed to %i x %i"),
                GetSize().x, GetSize().y);
 {
     wxLogTrace(_T("systray"), _T("icon size changed to %i x %i"),
                GetSize().x, GetSize().y);
@@ -213,7 +218,7 @@ void wxTaskBarIconArea::OnPaint(wxPaintEvent& WXUNUSED(event))
     wxPaintDC dc(this);
     dc.DrawBitmap(m_bmp, m_pos.x, m_pos.y, true);
 }
     wxPaintDC dc(this);
     dc.DrawBitmap(m_bmp, m_pos.x, m_pos.y, true);
 }
-    
+
 void wxTaskBarIconArea::OnMouseEvent(wxMouseEvent& event)
 {
     wxEventType type = 0;
 void wxTaskBarIconArea::OnMouseEvent(wxMouseEvent& event)
 {
     wxEventType type = 0;
@@ -241,7 +246,7 @@ void wxTaskBarIconArea::OnMouseEvent(wxMouseEvent& event)
 }
 
 void wxTaskBarIconArea::OnMenuEvent(wxCommandEvent& event)
 }
 
 void wxTaskBarIconArea::OnMenuEvent(wxCommandEvent& event)
-{    
+{
     m_icon->ProcessEvent(event);
 }
 
     m_icon->ProcessEvent(event);
 }
 
@@ -293,13 +298,15 @@ bool wxTaskBarIcon::SetIcon(const wxIcon& icon, const wxString& tooltip)
     else
     {
         m_iconWnd->SetTrayIcon(bmp);
     else
     {
         m_iconWnd->SetTrayIcon(bmp);
-    }    
-    
+    }
+
 #if wxUSE_TOOLTIPS
     if (!tooltip.empty())
         m_iconWnd->SetToolTip(tooltip);
     else
         m_iconWnd->SetToolTip(NULL);
 #if wxUSE_TOOLTIPS
     if (!tooltip.empty())
         m_iconWnd->SetToolTip(tooltip);
     else
         m_iconWnd->SetToolTip(NULL);
+#else
+    wxUnusedVar(tooltip);
 #endif
     return true;
 }
 #endif
     return true;
 }
@@ -320,3 +327,5 @@ bool wxTaskBarIcon::PopupMenu(wxMenu *menu)
     m_iconWnd->PopupMenu(menu);
     return true;
 }
     m_iconWnd->PopupMenu(menu);
     return true;
 }
+
+#endif // wxUSE_TASKBARICON