]> git.saurik.com Git - wxWidgets.git/blobdiff - src/osx/carbon/icon.cpp
avoid setting initial position if it was not specified, broken in r70734
[wxWidgets.git] / src / osx / carbon / icon.cpp
index 50bd2b8c5a17e9b70eb769b055b31a7809c68b57..51b3e34f4022ffb27043ba1e32ed8aa22e59ab7b 100644 (file)
@@ -4,7 +4,6 @@
 // Author:      Stefan Csomor
 // Modified by:
 // Created:     1998-01-01
-// RCS-ID:      $Id$
 // Copyright:   (c) Stefan Csomor
 // Licence:     wxWindows licence
 /////////////////////////////////////////////////////////////////////////////
@@ -137,21 +136,21 @@ wxIcon::CloneGDIRefData(const wxGDIRefData * WXUNUSED(data)) const
 
 WXHICON wxIcon::GetHICON() const
 {
-    wxASSERT( Ok() ) ;
+    wxASSERT( IsOk() ) ;
 
     return (WXHICON) ((wxIconRefData*)m_refData)->GetHICON() ;
 }
 
 int wxIcon::GetWidth() const
 {
-   wxCHECK_MSG( Ok(), -1, wxT("invalid icon") );
+   wxCHECK_MSG( IsOk(), -1, wxT("invalid icon") );
 
    return M_ICONDATA->GetWidth();
 }
 
 int wxIcon::GetHeight() const
 {
-   wxCHECK_MSG( Ok(), -1, wxT("invalid icon") );
+   wxCHECK_MSG( IsOk(), -1, wxT("invalid icon") );
 
    return M_ICONDATA->GetHeight();
 }
@@ -338,6 +337,7 @@ bool wxIcon::LoadIconFromBundleResource(const wxString& resourceName, int desire
             {
                 err = GetIconRefFromIconFamilyPtr( *iconFamily, GetHandleSize((Handle) iconFamily), &iconRef );
             }
+            ReleaseResource( (Handle) iconFamily );
         }
     }
 
@@ -380,7 +380,7 @@ bool wxIcon::LoadIconFromFile(const wxString& filename, int desiredWidth, int de
 
     if( err == noErr )
     {
-        // If everthing is OK, assign m_refData
+        // If everything is OK, assign m_refData
         m_refData = new wxIconRefData( (WXHICON) iconRef, desiredWidth, desiredHeight );
         result = true;
     }
@@ -413,7 +413,7 @@ bool wxIcon::LoadIconAsBitmap(const wxString& filename, wxBitmapType type, int d
     else
     {
         wxImage loadimage( filename, type );
-        if (loadimage.Ok())
+        if (loadimage.IsOk())
         {
             if ( desiredWidth == -1 )
                 desiredWidth = loadimage.GetWidth() ;
@@ -439,8 +439,21 @@ void wxIcon::CopyFromBitmap( const wxBitmap& bmp )
     UnRef() ;
 
     // as the bitmap owns that ref, we have to acquire it as well
-    IconRef iconRef = bmp.CreateIconRef() ;
-    m_refData = new wxIconRefData( (WXHICON) iconRef, bmp.GetWidth(), bmp.GetHeight()  ) ;
+    
+    int w = bmp.GetWidth() ;
+    int h = bmp.GetHeight() ;
+    int sz = wxMax( w , h ) ;
+
+    if ( sz == 24 || sz == 64 )
+    {
+        wxBitmap scaleBmp( bmp.ConvertToImage().Scale( w * 2 , h * 2 ) ) ;
+        m_refData = new wxIconRefData( (WXHICON) scaleBmp.CreateIconRef(), bmp.GetWidth(), bmp.GetHeight()  ) ;
+    }
+    else 
+    {
+        m_refData = new wxIconRefData( (WXHICON) bmp.CreateIconRef() , bmp.GetWidth(), bmp.GetHeight()  ) ;
+    }
+
 }
 
 IMPLEMENT_DYNAMIC_CLASS(wxICONResourceHandler, wxBitmapHandler)
@@ -453,7 +466,7 @@ bool  wxICONResourceHandler::LoadFile(
     if ( icon.LoadFile( name , wxBITMAP_TYPE_ICON_RESOURCE , desiredWidth , desiredHeight ) )
     {
         bitmap->CopyFromIcon( icon ) ;
-        return bitmap->Ok() ;
+        return bitmap->IsOk() ;
     }
     return false;
 }