]> git.saurik.com Git - wxWidgets.git/blobdiff - src/mac/carbon/icon.cpp
Remove my binary compatibility stuff from HEAD. Patch #1367014 used for reference.
[wxWidgets.git] / src / mac / carbon / icon.cpp
index 914b40b46bb7d8302a2a84305406d0578f856dff..8423ef62248393d5edd6834844b08518f36aa38a 100644 (file)
@@ -9,21 +9,17 @@
 // Licence:       wxWindows licence
 /////////////////////////////////////////////////////////////////////////////
 
-#if defined(__GNUG__) && !defined(NO_GCC_PRAGMA)
-#pragma implementation "icon.h"
-#endif
-
 #include "wx/wxprec.h"
 
 #include "wx/icon.h"
 
-#if !USE_SHARED_LIBRARIES
 IMPLEMENT_DYNAMIC_CLASS(wxIcon, wxBitmap)
-#endif
 
 #include "wx/image.h"
 #include "wx/mac/private.h"
 
+#define M_ICONDATA ((wxIconRefData *)m_refData)
+
 
 /*
  * Icons
@@ -69,12 +65,32 @@ WXHICON wxIcon::GetHICON() const
 
 int wxIcon::GetWidth() const
 {
-    return 32 ;
+   wxCHECK_MSG( Ok(), -1, wxT("invalid icon") );
+
+   return M_ICONDATA->GetWidth();
 }
 
 int wxIcon::GetHeight() const
 {
-    return 32 ;
+   wxCHECK_MSG( Ok(), -1, wxT("invalid icon") );
+
+   return M_ICONDATA->GetHeight();
+}
+
+int wxIcon::GetDepth() const{
+       return 32; 
+}
+
+void wxIcon::SetDepth(int depth){
+       
+}
+
+void wxIcon::SetWidth(int width){
+       
+}
+
+void wxIcon::SetHeight(int height){
+       
 }
 
 bool wxIcon::Ok() const
@@ -148,6 +164,7 @@ bool wxIcon::LoadFile(const wxString& filename, wxBitmapType type,
         }
         else
         {
+#if wxUSE_IMAGE
             wxImage loadimage(filename, type);
             if (loadimage.Ok()) 
             {
@@ -161,6 +178,7 @@ bool wxIcon::LoadFile(const wxString& filename, wxBitmapType type,
                 CopyFromBitmap( bmp ) ;
                 return true;
             }
+#endif
         }
     }
     return true ;
@@ -170,12 +188,20 @@ void wxIcon::CopyFromBitmap(const wxBitmap& bmp)
 {
     UnRef() ;
     
-    m_refData = new wxIconRefData( (WXHICON) wxMacCreateIconRef( bmp ) ) ;
+    // as the bitmap owns that ref, we have to acquire it as well
+    IconRef iconRef = bmp.GetBitmapData()->GetIconRef() ;
+    AcquireIconRef( iconRef ) ;
+    m_refData = new wxIconRefData( (WXHICON) iconRef ) ;
+    M_ICONDATA->SetWidth( bmp.GetWidth() ) ;
+    M_ICONDATA->SetHeight( bmp.GetHeight() ) ;
 }
 
 wxIconRefData::wxIconRefData( WXHICON icon )
 {
     m_iconRef = MAC_WXHICON( icon ) ;
+    // Std sizes
+    SetWidth( 32 ) ;
+    SetHeight( 32 ) ;
 }
 
 void wxIconRefData::Init()