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:
@@ -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,22 +422,32 @@ 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
|
||||||
ControlButtonContentInfo info ;
|
wxBitmap* bmap = GetImageList()->GetBitmap( GetPageImage(ii ) ) ;
|
||||||
wxMacCreateBitmapButton( &info , *GetImageList()->GetBitmap( GetPageImage(ii ) ) , kControlContentPictHandle) ;
|
if ( bmap )
|
||||||
IconFamilyHandle iconFamily = (IconFamilyHandle) NewHandle(0) ;
|
{
|
||||||
OSErr err = SetIconFamilyData( iconFamily, 'PICT' , (Handle) info.u.picture ) ;
|
wxBitmap scaledBitmap ;
|
||||||
wxASSERT_MSG( err == noErr , wxT("Error when adding bitmap") ) ;
|
if ( bmap->GetWidth() != 16 || bmap->GetHeight() != 16 )
|
||||||
IconRef iconRef ;
|
{
|
||||||
err = RegisterIconRefFromIconFamily( 'WXNG' , (OSType) 1 , iconFamily, &iconRef ) ;
|
scaledBitmap = wxBitmap( bmap->ConvertToImage().Scale(16,16) ) ;
|
||||||
wxASSERT_MSG( err == noErr , wxT("Error when adding bitmap") ) ;
|
bmap = &scaledBitmap ;
|
||||||
info.contentType = kControlContentIconRef ;
|
}
|
||||||
info.u.iconRef = iconRef ;
|
ControlButtonContentInfo info ;
|
||||||
SetControlData( (ControlHandle) m_macControl, ii+1,kControlTabImageContentTag,
|
wxMacCreateBitmapButton( &info , *bmap , kControlContentPictHandle) ;
|
||||||
sizeof( info ), (Ptr)&info );
|
IconFamilyHandle iconFamily = (IconFamilyHandle) NewHandle(0) ;
|
||||||
wxASSERT_MSG( err == noErr , wxT("Error when setting icon on tab") ) ;
|
OSErr err = SetIconFamilyData( iconFamily, 'PICT' , (Handle) info.u.picture ) ;
|
||||||
UnregisterIconRef( 'WXNG' , (OSType) 1 ) ;
|
wxASSERT_MSG( err == noErr , wxT("Error when adding bitmap") ) ;
|
||||||
ReleaseIconRef( iconRef ) ;
|
IconRef iconRef ;
|
||||||
DisposeHandle( (Handle) iconFamily ) ;
|
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
|
#endif
|
||||||
}
|
}
|
||||||
|
@@ -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,22 +422,32 @@ 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
|
||||||
ControlButtonContentInfo info ;
|
wxBitmap* bmap = GetImageList()->GetBitmap( GetPageImage(ii ) ) ;
|
||||||
wxMacCreateBitmapButton( &info , *GetImageList()->GetBitmap( GetPageImage(ii ) ) , kControlContentPictHandle) ;
|
if ( bmap )
|
||||||
IconFamilyHandle iconFamily = (IconFamilyHandle) NewHandle(0) ;
|
{
|
||||||
OSErr err = SetIconFamilyData( iconFamily, 'PICT' , (Handle) info.u.picture ) ;
|
wxBitmap scaledBitmap ;
|
||||||
wxASSERT_MSG( err == noErr , wxT("Error when adding bitmap") ) ;
|
if ( bmap->GetWidth() != 16 || bmap->GetHeight() != 16 )
|
||||||
IconRef iconRef ;
|
{
|
||||||
err = RegisterIconRefFromIconFamily( 'WXNG' , (OSType) 1 , iconFamily, &iconRef ) ;
|
scaledBitmap = wxBitmap( bmap->ConvertToImage().Scale(16,16) ) ;
|
||||||
wxASSERT_MSG( err == noErr , wxT("Error when adding bitmap") ) ;
|
bmap = &scaledBitmap ;
|
||||||
info.contentType = kControlContentIconRef ;
|
}
|
||||||
info.u.iconRef = iconRef ;
|
ControlButtonContentInfo info ;
|
||||||
SetControlData( (ControlHandle) m_macControl, ii+1,kControlTabImageContentTag,
|
wxMacCreateBitmapButton( &info , *bmap , kControlContentPictHandle) ;
|
||||||
sizeof( info ), (Ptr)&info );
|
IconFamilyHandle iconFamily = (IconFamilyHandle) NewHandle(0) ;
|
||||||
wxASSERT_MSG( err == noErr , wxT("Error when setting icon on tab") ) ;
|
OSErr err = SetIconFamilyData( iconFamily, 'PICT' , (Handle) info.u.picture ) ;
|
||||||
UnregisterIconRef( 'WXNG' , (OSType) 1 ) ;
|
wxASSERT_MSG( err == noErr , wxT("Error when adding bitmap") ) ;
|
||||||
ReleaseIconRef( iconRef ) ;
|
IconRef iconRef ;
|
||||||
DisposeHandle( (Handle) iconFamily ) ;
|
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
|
#endif
|
||||||
}
|
}
|
||||||
|
Reference in New Issue
Block a user