]> git.saurik.com Git - wxWidgets.git/blobdiff - src/msw/taskbar.cpp
Add tests for XShape extension API in configure,
[wxWidgets.git] / src / msw / taskbar.cpp
index 0cab9d2d3aecfdb2f333eca1ce15d7eda95b10ac..da4ab58764ea18e4179e26338b6674c6c4582295 100644 (file)
@@ -36,7 +36,7 @@
 #include "wx/msw/winundef.h"
 
 #include <string.h>
-#include "wx/msw/taskbar.h"
+#include "wx/taskbar.h"
 #include "wx/msw/private.h"
 
 #ifndef __TWIN32__
     #include <shellapi.h>
 #endif
 
+#include "wx/listimpl.cpp"
+WX_DEFINE_LIST(wxTaskBarIconList);
+
 LRESULT APIENTRY _EXPORT wxTaskBarIconWindowProc( HWND hWnd, unsigned msg,
                                      UINT wParam, LONG lParam );
 
-wxChar *wxTaskBarWindowClass = wxT("wxTaskBarWindowClass");
+wxChar *wxTaskBarWindowClass = (wxChar*) wxT("wxTaskBarWindowClass");
 
-wxList wxTaskBarIcon::sm_taskBarIcons;
+wxTaskBarIconList wxTaskBarIcon::sm_taskBarIcons;
 bool   wxTaskBarIcon::sm_registeredClass = FALSE;
 UINT   wxTaskBarIcon::sm_taskbarMsg = 0;
 
-
+#if WXWIN_COMPATIBILITY_2_4
 BEGIN_EVENT_TABLE(wxTaskBarIcon, wxEvtHandler)
     EVT_TASKBAR_MOVE         (wxTaskBarIcon::_OnMouseMove)
     EVT_TASKBAR_LEFT_DOWN    (wxTaskBarIcon::_OnLButtonDown)
@@ -68,6 +71,7 @@ BEGIN_EVENT_TABLE(wxTaskBarIcon, wxEvtHandler)
     EVT_TASKBAR_LEFT_DCLICK  (wxTaskBarIcon::_OnLButtonDClick)
     EVT_TASKBAR_RIGHT_DCLICK (wxTaskBarIcon::_OnRButtonDClick)
 END_EVENT_TABLE()
+#endif
 
 
 IMPLEMENT_DYNAMIC_CLASS(wxTaskBarIcon, wxEvtHandler)
@@ -76,7 +80,7 @@ IMPLEMENT_DYNAMIC_CLASS(wxTaskBarIcon, wxEvtHandler)
 wxTaskBarIcon::wxTaskBarIcon(void)
 {
     m_hWnd = 0;
-    m_iconAdded = FALSE;
+    m_iconAdded = false;
 
     AddObject(this);
 
@@ -103,8 +107,8 @@ wxTaskBarIcon::~wxTaskBarIcon(void)
 // Operations
 bool wxTaskBarIcon::SetIcon(const wxIcon& icon, const wxString& tooltip)
 {
-    if (!IsOK())
-        return FALSE;
+    if (!IsOk())
+        return false;
 
     NOTIFYICONDATA notifyData;
 
@@ -139,7 +143,7 @@ bool wxTaskBarIcon::SetIcon(const wxIcon& icon, const wxString& tooltip)
 bool wxTaskBarIcon::RemoveIcon(void)
 {
     if (!m_iconAdded)
-        return FALSE;
+        return false;
 
     NOTIFYICONDATA notifyData;
 
@@ -150,7 +154,7 @@ bool wxTaskBarIcon::RemoveIcon(void)
         notifyData.uFlags = NIF_MESSAGE;
         notifyData.hIcon = 0 ; // hIcon;
     notifyData.uID = 99;
-    m_iconAdded = FALSE;
+    m_iconAdded = false;
 
     return (Shell_NotifyIcon(NIM_DELETE, & notifyData) != 0);
 }
@@ -160,20 +164,20 @@ bool wxTaskBarIcon::PopupMenu(wxMenu *menu) //, int x, int y);
     // OK, so I know this isn't thread-friendly, but
     // what to do? We need this check.
 
-    static bool s_inPopup = FALSE;
+    static bool s_inPopup = false;
 
     if (s_inPopup)
-        return FALSE;
+        return false;
 
-    s_inPopup = TRUE;
+    s_inPopup = true;
 
-    bool        rval = FALSE;
+    bool        rval = false;
     wxWindow*   win;
     int         x, y;
     wxGetMousePosition(&x, &y);
 
     // is wxFrame the best window type to use???
-    win = new wxFrame(NULL, -1, "", wxPoint(x,y), wxSize(-1,-1), 0);
+    win = new wxFrame(NULL, -1, wxEmptyString, wxPoint(x,y), wxSize(-1,-1), 0);
     win->PushEventHandler(this);
 
     // Remove from record of top-level windows, or will confuse wxWindows
@@ -190,44 +194,24 @@ bool wxTaskBarIcon::PopupMenu(wxMenu *menu) //, int x, int y);
     // Work around a WIN32 bug
     ::PostMessage ((HWND) win->GetHWND(),WM_NULL,0,0L);
 
-    win->PopEventHandler(FALSE);
+    win->PopEventHandler(false);
     win->Destroy();
     delete win;
 
-    s_inPopup = FALSE;
+    s_inPopup = false;
 
     return rval;
 }
 
-
+#if WXWIN_COMPATIBILITY_2_4
 // Overridables
-void wxTaskBarIcon::OnMouseMove(wxEvent&)
-{
-}
-
-void wxTaskBarIcon::OnLButtonDown(wxEvent&)
-{
-}
-
-void wxTaskBarIcon::OnLButtonUp(wxEvent&)
-{
-}
-
-void wxTaskBarIcon::OnRButtonDown(wxEvent&)
-{
-}
-
-void wxTaskBarIcon::OnRButtonUp(wxEvent&)
-{
-}
-
-void wxTaskBarIcon::OnLButtonDClick(wxEvent&)
-{
-}
-
-void wxTaskBarIcon::OnRButtonDClick(wxEvent&)
-{
-}
+void wxTaskBarIcon::OnMouseMove(wxEvent&)         {}
+void wxTaskBarIcon::OnLButtonDown(wxEvent&)       {}
+void wxTaskBarIcon::OnLButtonUp(wxEvent&)         {}
+void wxTaskBarIcon::OnRButtonDown(wxEvent&)       {}
+void wxTaskBarIcon::OnRButtonUp(wxEvent&)         {}
+void wxTaskBarIcon::OnLButtonDClick(wxEvent&)     {}
+void wxTaskBarIcon::OnRButtonDClick(wxEvent&)     {}
 
 void wxTaskBarIcon::_OnMouseMove(wxEvent& e)      { OnMouseMove(e);     }
 void wxTaskBarIcon::_OnLButtonDown(wxEvent& e)    { OnLButtonDown(e);   }
@@ -236,17 +220,17 @@ void wxTaskBarIcon::_OnRButtonDown(wxEvent& e)    { OnRButtonDown(e);   }
 void wxTaskBarIcon::_OnRButtonUp(wxEvent& e)      { OnRButtonUp(e);     }
 void wxTaskBarIcon::_OnLButtonDClick(wxEvent& e)  { OnLButtonDClick(e); }
 void wxTaskBarIcon::_OnRButtonDClick(wxEvent& e)  { OnRButtonDClick(e); }
-
+#endif
 
 wxTaskBarIcon* wxTaskBarIcon::FindObjectForHWND(WXHWND hWnd)
 {
-    wxNode*node = sm_taskBarIcons.First();
+    wxTaskBarIconList::Node *node = sm_taskBarIcons.GetFirst();
     while (node)
     {
-        wxTaskBarIcon* obj = (wxTaskBarIcon*) node->Data();
+        wxTaskBarIcon *obj = node->GetData();
         if (obj->GetHWND() == hWnd)
             return obj;
-        node = node->Next();
+        node = node->GetNext();
     }
     return NULL;
 }
@@ -264,7 +248,7 @@ void wxTaskBarIcon::RemoveObject(wxTaskBarIcon* obj)
 bool wxTaskBarIcon::RegisterWindowClass()
 {
     if (sm_registeredClass)
-        return TRUE;
+        return true;
 
     // Also register the taskbar message here
     sm_taskbarMsg = ::RegisterWindowMessage(wxT("wxTaskBarIconMessage"));
@@ -355,9 +339,7 @@ long wxTaskBarIcon::WindowProc( WXHWND hWnd, unsigned int msg, unsigned int wPar
         }
 
     if (eventType) {
-        wxEvent event;
-        event.SetEventType(eventType);
-        event.SetEventObject(this);
+        wxTaskBarIconEvent event(eventType, this);
 
         ProcessEvent(event);
     }
@@ -367,7 +349,7 @@ long wxTaskBarIcon::WindowProc( WXHWND hWnd, unsigned int msg, unsigned int wPar
 LRESULT APIENTRY _EXPORT wxTaskBarIconWindowProc( HWND hWnd, unsigned msg,
                                      UINT wParam, LONG lParam )
 {
-    wxTaskBarIconobj = wxTaskBarIcon::FindObjectForHWND((WXHWND) hWnd);
+    wxTaskBarIcon *obj = wxTaskBarIcon::FindObjectForHWND((WXHWND) hWnd);
     if (obj)
         return obj->WindowProc((WXHWND) hWnd, msg, wParam, lParam);
     else