selection for DeleteAllPages corrected, images scaleing in order to avoid crashes under OSX

git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@23402 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
This commit is contained in:
Stefan Csomor
2003-09-05 14:44:48 +00:00
parent e778ad8607
commit 061174e31a
2 changed files with 56 additions and 38 deletions

View File

@@ -24,6 +24,7 @@
#include "wx/string.h" #include "wx/string.h"
#include "wx/log.h" #include "wx/log.h"
#include "wx/imaglist.h" #include "wx/imaglist.h"
#include "wx/image.h"
#include "wx/notebook.h" #include "wx/notebook.h"
#include "wx/mac/uma.h" #include "wx/mac/uma.h"
// ---------------------------------------------------------------------------- // ----------------------------------------------------------------------------
@@ -341,11 +342,9 @@ wxNotebookPage* wxNotebook::DoRemovePage(size_t nPage)
// remove all pages // remove all pages
bool wxNotebook::DeleteAllPages() bool wxNotebook::DeleteAllPages()
{ {
// TODO: delete native widget pages
WX_CLEAR_ARRAY(m_pages) ; WX_CLEAR_ARRAY(m_pages) ;
MacSetupTabs(); MacSetupTabs();
m_nSelection = -1 ;
return TRUE; return TRUE;
} }
@@ -423,8 +422,17 @@ void wxNotebook::MacSetupTabs()
// afterwards Unregister it (IconRef is ref counted, so it will stay on the tab even if we // 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 // unregister it) in case this will ever lead to having the same icon everywhere add some kind
// of static counter // of static counter
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 ; ControlButtonContentInfo info ;
wxMacCreateBitmapButton( &info , *GetImageList()->GetBitmap( GetPageImage(ii ) ) , kControlContentPictHandle) ; wxMacCreateBitmapButton( &info , *bmap , kControlContentPictHandle) ;
IconFamilyHandle iconFamily = (IconFamilyHandle) NewHandle(0) ; IconFamilyHandle iconFamily = (IconFamilyHandle) NewHandle(0) ;
OSErr err = SetIconFamilyData( iconFamily, 'PICT' , (Handle) info.u.picture ) ; OSErr err = SetIconFamilyData( iconFamily, 'PICT' , (Handle) info.u.picture ) ;
wxASSERT_MSG( err == noErr , wxT("Error when adding bitmap") ) ; wxASSERT_MSG( err == noErr , wxT("Error when adding bitmap") ) ;
@@ -440,6 +448,7 @@ void wxNotebook::MacSetupTabs()
ReleaseIconRef( iconRef ) ; ReleaseIconRef( iconRef ) ;
DisposeHandle( (Handle) iconFamily ) ; DisposeHandle( (Handle) iconFamily ) ;
} }
}
#endif #endif
} }
Rect bounds; Rect bounds;

View File

@@ -24,6 +24,7 @@
#include "wx/string.h" #include "wx/string.h"
#include "wx/log.h" #include "wx/log.h"
#include "wx/imaglist.h" #include "wx/imaglist.h"
#include "wx/image.h"
#include "wx/notebook.h" #include "wx/notebook.h"
#include "wx/mac/uma.h" #include "wx/mac/uma.h"
// ---------------------------------------------------------------------------- // ----------------------------------------------------------------------------
@@ -341,11 +342,9 @@ wxNotebookPage* wxNotebook::DoRemovePage(size_t nPage)
// remove all pages // remove all pages
bool wxNotebook::DeleteAllPages() bool wxNotebook::DeleteAllPages()
{ {
// TODO: delete native widget pages
WX_CLEAR_ARRAY(m_pages) ; WX_CLEAR_ARRAY(m_pages) ;
MacSetupTabs(); MacSetupTabs();
m_nSelection = -1 ;
return TRUE; return TRUE;
} }
@@ -423,8 +422,17 @@ void wxNotebook::MacSetupTabs()
// afterwards Unregister it (IconRef is ref counted, so it will stay on the tab even if we // 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 // unregister it) in case this will ever lead to having the same icon everywhere add some kind
// of static counter // of static counter
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 ; ControlButtonContentInfo info ;
wxMacCreateBitmapButton( &info , *GetImageList()->GetBitmap( GetPageImage(ii ) ) , kControlContentPictHandle) ; wxMacCreateBitmapButton( &info , *bmap , kControlContentPictHandle) ;
IconFamilyHandle iconFamily = (IconFamilyHandle) NewHandle(0) ; IconFamilyHandle iconFamily = (IconFamilyHandle) NewHandle(0) ;
OSErr err = SetIconFamilyData( iconFamily, 'PICT' , (Handle) info.u.picture ) ; OSErr err = SetIconFamilyData( iconFamily, 'PICT' , (Handle) info.u.picture ) ;
wxASSERT_MSG( err == noErr , wxT("Error when adding bitmap") ) ; wxASSERT_MSG( err == noErr , wxT("Error when adding bitmap") ) ;
@@ -440,6 +448,7 @@ void wxNotebook::MacSetupTabs()
ReleaseIconRef( iconRef ) ; ReleaseIconRef( iconRef ) ;
DisposeHandle( (Handle) iconFamily ) ; DisposeHandle( (Handle) iconFamily ) ;
} }
}
#endif #endif
} }
Rect bounds; Rect bounds;