]> git.saurik.com Git - wxWidgets.git/commitdiff
selection for DeleteAllPages corrected, images scaleing in order to avoid crashes...
authorStefan Csomor <csomor@advancedconcepts.ch>
Fri, 5 Sep 2003 14:44:48 +0000 (14:44 +0000)
committerStefan Csomor <csomor@advancedconcepts.ch>
Fri, 5 Sep 2003 14:44:48 +0000 (14:44 +0000)
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@23402 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775

src/mac/carbon/notebmac.cpp
src/mac/notebmac.cpp

index 3a45c336fa799beadc14973a1021c98a80547def..36a27df2eb26ac41d893f384593c220a2a59509d 100644 (file)
@@ -24,6 +24,7 @@
 #include "wx/string.h"
 #include "wx/log.h"
 #include "wx/imaglist.h"
+#include "wx/image.h"
 #include "wx/notebook.h"
 #include "wx/mac/uma.h"
 // ----------------------------------------------------------------------------
@@ -341,11 +342,9 @@ wxNotebookPage* wxNotebook::DoRemovePage(size_t nPage)
 // remove all pages
 bool wxNotebook::DeleteAllPages()
 {
-    // TODO: delete native widget pages
-
     WX_CLEAR_ARRAY(m_pages) ;
     MacSetupTabs();
-
+    m_nSelection = -1 ;
     return TRUE;
 }
 
@@ -423,22 +422,32 @@ void wxNotebook::MacSetupTabs()
             // afterwards Unregister it (IconRef is ref counted, so it will stay on the tab even if we
             // unregister it) in case this will ever lead to having the same icon everywhere add some kind
             // of static counter
-            ControlButtonContentInfo info ;
-            wxMacCreateBitmapButton( &info , *GetImageList()->GetBitmap( GetPageImage(ii ) ) , kControlContentPictHandle) ;
-            IconFamilyHandle iconFamily = (IconFamilyHandle) NewHandle(0) ;
-            OSErr err = SetIconFamilyData( iconFamily, 'PICT' , (Handle) info.u.picture ) ;
-            wxASSERT_MSG( err == noErr , wxT("Error when adding bitmap") ) ;
-            IconRef iconRef ;
-            err = RegisterIconRefFromIconFamily( 'WXNG' , (OSType) 1 , iconFamily, &iconRef ) ;
-            wxASSERT_MSG( err == noErr , wxT("Error when adding bitmap") ) ;
-            info.contentType = kControlContentIconRef ;
-            info.u.iconRef = iconRef ;
-            SetControlData( (ControlHandle) m_macControl, ii+1,kControlTabImageContentTag,
-                sizeof( info ), (Ptr)&info );
-            wxASSERT_MSG( err == noErr , wxT("Error when setting icon on tab") ) ;
-               UnregisterIconRef( 'WXNG' , (OSType) 1 ) ;
-            ReleaseIconRef( iconRef ) ;
-            DisposeHandle( (Handle) iconFamily ) ;
+            wxBitmap* bmap = GetImageList()->GetBitmap( GetPageImage(ii ) ) ;
+            if ( bmap )
+            {
+                wxBitmap scaledBitmap ;
+                if ( bmap->GetWidth() != 16 || bmap->GetHeight() != 16 )
+                {
+                    scaledBitmap = wxBitmap( bmap->ConvertToImage().Scale(16,16) ) ;
+                    bmap = &scaledBitmap ;
+                }
+                ControlButtonContentInfo info ;
+                wxMacCreateBitmapButton( &info , *bmap , kControlContentPictHandle) ;
+                IconFamilyHandle iconFamily = (IconFamilyHandle) NewHandle(0) ;
+                OSErr err = SetIconFamilyData( iconFamily, 'PICT' , (Handle) info.u.picture ) ;
+                wxASSERT_MSG( err == noErr , wxT("Error when adding bitmap") ) ;
+                IconRef iconRef ;
+                err = RegisterIconRefFromIconFamily( 'WXNG' , (OSType) 1 , iconFamily, &iconRef ) ;
+                wxASSERT_MSG( err == noErr , wxT("Error when adding bitmap") ) ;
+                info.contentType = kControlContentIconRef ;
+                info.u.iconRef = iconRef ;
+                SetControlData( (ControlHandle) m_macControl, ii+1,kControlTabImageContentTag,
+                    sizeof( info ), (Ptr)&info );
+                wxASSERT_MSG( err == noErr , wxT("Error when setting icon on tab") ) ;
+                   UnregisterIconRef( 'WXNG' , (OSType) 1 ) ;
+                ReleaseIconRef( iconRef ) ;
+                DisposeHandle( (Handle) iconFamily ) ;
+            }
         }
 #endif
     }
index 3a45c336fa799beadc14973a1021c98a80547def..36a27df2eb26ac41d893f384593c220a2a59509d 100644 (file)
@@ -24,6 +24,7 @@
 #include "wx/string.h"
 #include "wx/log.h"
 #include "wx/imaglist.h"
+#include "wx/image.h"
 #include "wx/notebook.h"
 #include "wx/mac/uma.h"
 // ----------------------------------------------------------------------------
@@ -341,11 +342,9 @@ wxNotebookPage* wxNotebook::DoRemovePage(size_t nPage)
 // remove all pages
 bool wxNotebook::DeleteAllPages()
 {
-    // TODO: delete native widget pages
-
     WX_CLEAR_ARRAY(m_pages) ;
     MacSetupTabs();
-
+    m_nSelection = -1 ;
     return TRUE;
 }
 
@@ -423,22 +422,32 @@ void wxNotebook::MacSetupTabs()
             // afterwards Unregister it (IconRef is ref counted, so it will stay on the tab even if we
             // unregister it) in case this will ever lead to having the same icon everywhere add some kind
             // of static counter
-            ControlButtonContentInfo info ;
-            wxMacCreateBitmapButton( &info , *GetImageList()->GetBitmap( GetPageImage(ii ) ) , kControlContentPictHandle) ;
-            IconFamilyHandle iconFamily = (IconFamilyHandle) NewHandle(0) ;
-            OSErr err = SetIconFamilyData( iconFamily, 'PICT' , (Handle) info.u.picture ) ;
-            wxASSERT_MSG( err == noErr , wxT("Error when adding bitmap") ) ;
-            IconRef iconRef ;
-            err = RegisterIconRefFromIconFamily( 'WXNG' , (OSType) 1 , iconFamily, &iconRef ) ;
-            wxASSERT_MSG( err == noErr , wxT("Error when adding bitmap") ) ;
-            info.contentType = kControlContentIconRef ;
-            info.u.iconRef = iconRef ;
-            SetControlData( (ControlHandle) m_macControl, ii+1,kControlTabImageContentTag,
-                sizeof( info ), (Ptr)&info );
-            wxASSERT_MSG( err == noErr , wxT("Error when setting icon on tab") ) ;
-               UnregisterIconRef( 'WXNG' , (OSType) 1 ) ;
-            ReleaseIconRef( iconRef ) ;
-            DisposeHandle( (Handle) iconFamily ) ;
+            wxBitmap* bmap = GetImageList()->GetBitmap( GetPageImage(ii ) ) ;
+            if ( bmap )
+            {
+                wxBitmap scaledBitmap ;
+                if ( bmap->GetWidth() != 16 || bmap->GetHeight() != 16 )
+                {
+                    scaledBitmap = wxBitmap( bmap->ConvertToImage().Scale(16,16) ) ;
+                    bmap = &scaledBitmap ;
+                }
+                ControlButtonContentInfo info ;
+                wxMacCreateBitmapButton( &info , *bmap , kControlContentPictHandle) ;
+                IconFamilyHandle iconFamily = (IconFamilyHandle) NewHandle(0) ;
+                OSErr err = SetIconFamilyData( iconFamily, 'PICT' , (Handle) info.u.picture ) ;
+                wxASSERT_MSG( err == noErr , wxT("Error when adding bitmap") ) ;
+                IconRef iconRef ;
+                err = RegisterIconRefFromIconFamily( 'WXNG' , (OSType) 1 , iconFamily, &iconRef ) ;
+                wxASSERT_MSG( err == noErr , wxT("Error when adding bitmap") ) ;
+                info.contentType = kControlContentIconRef ;
+                info.u.iconRef = iconRef ;
+                SetControlData( (ControlHandle) m_macControl, ii+1,kControlTabImageContentTag,
+                    sizeof( info ), (Ptr)&info );
+                wxASSERT_MSG( err == noErr , wxT("Error when setting icon on tab") ) ;
+                   UnregisterIconRef( 'WXNG' , (OSType) 1 ) ;
+                ReleaseIconRef( iconRef ) ;
+                DisposeHandle( (Handle) iconFamily ) ;
+            }
         }
 #endif
     }