cleanup - reformat

git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@36738 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
This commit is contained in:
David Surovell
2006-01-06 21:14:34 +00:00
parent 0d8c57c006
commit 5a7d70fe89
3 changed files with 250 additions and 234 deletions

View File

@@ -12,54 +12,51 @@
#include "wx/wxprec.h" #include "wx/wxprec.h"
#include "wx/icon.h" #include "wx/icon.h"
IMPLEMENT_DYNAMIC_CLASS(wxIcon, wxBitmap)
#include "wx/image.h" #include "wx/image.h"
#include "wx/mac/private.h" #include "wx/mac/private.h"
IMPLEMENT_DYNAMIC_CLASS(wxIcon, wxBitmap)
#define M_ICONDATA ((wxIconRefData *)m_refData) #define M_ICONDATA ((wxIconRefData *)m_refData)
/*
* Icons
*/
wxIcon::wxIcon() wxIcon::wxIcon()
{ {
} }
wxIcon::wxIcon(const char bits[], int width, int height) wxIcon::wxIcon( const char bits[], int width, int height )
{ {
wxBitmap bmp(bits,width,height) ; wxBitmap bmp( bits, width, height ) ;
CopyFromBitmap( bmp ) ; CopyFromBitmap( bmp ) ;
} }
wxIcon::wxIcon( const char **bits ) wxIcon::wxIcon( const char **bits )
{ {
wxBitmap bmp(bits) ; wxBitmap bmp( bits ) ;
CopyFromBitmap( bmp ) ; CopyFromBitmap( bmp ) ;
} }
wxIcon::wxIcon( char **bits ) wxIcon::wxIcon( char **bits )
{ {
wxBitmap bmp(bits) ; wxBitmap bmp( bits ) ;
CopyFromBitmap( bmp ) ; CopyFromBitmap( bmp ) ;
} }
wxIcon::wxIcon(const wxString& icon_file, int flags, wxIcon::wxIcon(
int desiredWidth, int desiredHeight) const wxString& icon_file, int flags,
int desiredWidth, int desiredHeight )
{ {
LoadFile(icon_file, (wxBitmapType) flags, desiredWidth, desiredHeight); LoadFile( icon_file, (wxBitmapType) flags, desiredWidth, desiredHeight );
} }
wxIcon::~wxIcon() wxIcon::~wxIcon()
{ {
} }
WXHICON wxIcon::GetHICON() const WXHICON wxIcon::GetHICON() const
{ {
wxASSERT( Ok() ) ; wxASSERT( Ok() ) ;
return (WXHICON) ((wxIconRefData*)m_refData)->GetHICON() ; return (WXHICON) ((wxIconRefData*)m_refData)->GetHICON() ;
} }
@@ -77,20 +74,21 @@ int wxIcon::GetHeight() const
return M_ICONDATA->GetHeight(); return M_ICONDATA->GetHeight();
} }
int wxIcon::GetDepth() const{ int wxIcon::GetDepth() const
return 32; {
return 32;
} }
void wxIcon::SetDepth(int depth){ void wxIcon::SetDepth( int depth )
{
} }
void wxIcon::SetWidth(int width){ void wxIcon::SetWidth( int width )
{
} }
void wxIcon::SetHeight(int height){ void wxIcon::SetHeight( int height )
{
} }
bool wxIcon::Ok() const bool wxIcon::Ok() const
@@ -98,14 +96,16 @@ bool wxIcon::Ok() const
return m_refData != NULL ; return m_refData != NULL ;
} }
bool wxIcon::LoadFile(const wxString& filename, wxBitmapType type, bool wxIcon::LoadFile(
int desiredWidth, int desiredHeight) const wxString& filename, wxBitmapType type,
int desiredWidth, int desiredHeight )
{ {
UnRef(); UnRef();
if ( type == wxBITMAP_TYPE_ICON_RESOURCE ) if ( type == wxBITMAP_TYPE_ICON_RESOURCE )
{ {
OSType theId = 0 ; OSType theId = 0 ;
if ( filename == wxT("wxICON_INFORMATION") ) if ( filename == wxT("wxICON_INFORMATION") )
{ {
theId = kAlertNoteIcon ; theId = kAlertNoteIcon ;
@@ -123,50 +123,56 @@ bool wxIcon::LoadFile(const wxString& filename, wxBitmapType type,
theId = kAlertStopIcon ; theId = kAlertStopIcon ;
} }
else else
{/* {
#if 0
Str255 theName ; Str255 theName ;
OSType theType ; OSType theType ;
wxMacStringToPascal( name , theName ) ; wxMacStringToPascal( name , theName ) ;
Handle resHandle = GetNamedResource( 'cicn' , theName ) ; Handle resHandle = GetNamedResource( 'cicn' , theName ) ;
if ( resHandle != 0L ) if ( resHandle != 0L )
{ {
GetResInfo( resHandle , &theId , &theType , theName ) ; GetResInfo( resHandle , &theId , &theType , theName ) ;
ReleaseResource( resHandle ) ; ReleaseResource( resHandle ) ;
} }
*/ #endif
} }
if ( theId != 0 ) if ( theId != 0 )
{ {
IconRef iconRef = NULL ; IconRef iconRef = NULL ;
verify_noerr(GetIconRef(kOnSystemDisk,kSystemIconsCreator,theId, &iconRef)) ; verify_noerr( GetIconRef( kOnSystemDisk, kSystemIconsCreator, theId, &iconRef ) ) ;
if ( iconRef ) if ( iconRef )
{ {
m_refData = new wxIconRefData( (WXHICON) iconRef ) ; m_refData = new wxIconRefData( (WXHICON) iconRef ) ;
return TRUE ;
return true ;
} }
} }
return FALSE ;
return false ;
} }
else else
{ {
wxBitmapHandler *handler = wxBitmap::FindHandler(type); wxBitmapHandler *handler = wxBitmap::FindHandler( type );
if ( handler ) if ( handler )
{ {
wxBitmap bmp ; wxBitmap bmp ;
if ( handler->LoadFile(&bmp , filename, type, desiredWidth, desiredHeight )) if ( handler->LoadFile( &bmp , filename, type, desiredWidth, desiredHeight ))
{ {
CopyFromBitmap( bmp ) ; CopyFromBitmap( bmp ) ;
return true ; return true ;
} }
return false ; return false ;
} }
else else
{ {
#if wxUSE_IMAGE #if wxUSE_IMAGE
wxImage loadimage(filename, type); wxImage loadimage( filename, type );
if (loadimage.Ok()) if (loadimage.Ok())
{ {
if ( desiredWidth == -1 ) if ( desiredWidth == -1 )
desiredWidth = loadimage.GetWidth() ; desiredWidth = loadimage.GetWidth() ;
@@ -174,8 +180,10 @@ bool wxIcon::LoadFile(const wxString& filename, wxBitmapType type,
desiredHeight = loadimage.GetHeight() ; desiredHeight = loadimage.GetHeight() ;
if ( desiredWidth != loadimage.GetWidth() || desiredHeight != loadimage.GetHeight() ) if ( desiredWidth != loadimage.GetWidth() || desiredHeight != loadimage.GetHeight() )
loadimage.Rescale( desiredWidth , desiredHeight ) ; loadimage.Rescale( desiredWidth , desiredHeight ) ;
wxBitmap bmp( loadimage ); wxBitmap bmp( loadimage );
CopyFromBitmap( bmp ) ; CopyFromBitmap( bmp ) ;
return true; return true;
} }
#endif #endif
@@ -184,13 +192,14 @@ bool wxIcon::LoadFile(const wxString& filename, wxBitmapType type,
return true ; return true ;
} }
void wxIcon::CopyFromBitmap(const wxBitmap& bmp) void wxIcon::CopyFromBitmap( const wxBitmap& bmp )
{ {
UnRef() ; UnRef() ;
// as the bitmap owns that ref, we have to acquire it as well // as the bitmap owns that ref, we have to acquire it as well
IconRef iconRef = bmp.GetBitmapData()->GetIconRef() ; IconRef iconRef = bmp.GetBitmapData()->GetIconRef() ;
AcquireIconRef( iconRef ) ; AcquireIconRef( iconRef ) ;
m_refData = new wxIconRefData( (WXHICON) iconRef ) ; m_refData = new wxIconRefData( (WXHICON) iconRef ) ;
M_ICONDATA->SetWidth( bmp.GetWidth() ) ; M_ICONDATA->SetWidth( bmp.GetWidth() ) ;
M_ICONDATA->SetHeight( bmp.GetHeight() ) ; M_ICONDATA->SetHeight( bmp.GetHeight() ) ;
@@ -199,12 +208,13 @@ void wxIcon::CopyFromBitmap(const wxBitmap& bmp)
wxIconRefData::wxIconRefData( WXHICON icon ) wxIconRefData::wxIconRefData( WXHICON icon )
{ {
m_iconRef = MAC_WXHICON( icon ) ; m_iconRef = MAC_WXHICON( icon ) ;
// Std sizes
// Standard sizes
SetWidth( 32 ) ; SetWidth( 32 ) ;
SetHeight( 32 ) ; SetHeight( 32 ) ;
} }
void wxIconRefData::Init() void wxIconRefData::Init()
{ {
m_iconRef = NULL ; m_iconRef = NULL ;
} }
@@ -220,11 +230,14 @@ void wxIconRefData::Free()
IMPLEMENT_DYNAMIC_CLASS(wxICONResourceHandler, wxBitmapHandler) IMPLEMENT_DYNAMIC_CLASS(wxICONResourceHandler, wxBitmapHandler)
bool wxICONResourceHandler::LoadFile(wxBitmap *bitmap, const wxString& name, long flags, bool wxICONResourceHandler::LoadFile(
int desiredWidth, int desiredHeight) wxBitmap *bitmap, const wxString& name, long flags,
int desiredWidth, int desiredHeight )
{ {
wxIcon icon ; wxIcon icon ;
icon.LoadFile( name , wxBITMAP_TYPE_ICON_RESOURCE , desiredWidth , desiredHeight ) ; icon.LoadFile( name , wxBITMAP_TYPE_ICON_RESOURCE , desiredWidth , desiredHeight ) ;
bitmap->CopyFromIcon( icon ) ; bitmap->CopyFromIcon( icon ) ;
return bitmap->Ok() ; return bitmap->Ok() ;
} }

View File

@@ -70,12 +70,12 @@ void wxMDIParentFrame::Init()
} }
bool wxMDIParentFrame::Create(wxWindow *parent, bool wxMDIParentFrame::Create(wxWindow *parent,
wxWindowID id, wxWindowID id,
const wxString& title, const wxString& title,
const wxPoint& pos, const wxPoint& pos,
const wxSize& size, const wxSize& size,
long style, long style,
const wxString& name) const wxString& name)
{ {
// this style can be used to prevent a window from having the standard MDI // this style can be used to prevent a window from having the standard MDI
// "Window" menu // "Window" menu
@@ -87,7 +87,7 @@ bool wxMDIParentFrame::Create(wxWindow *parent,
else // normal case: we have the window menu, so construct it else // normal case: we have the window menu, so construct it
{ {
m_windowMenu = new wxMenu; m_windowMenu = new wxMenu;
m_windowMenu->Append(IDM_WINDOWCASCADE, wxT("&Cascade")); m_windowMenu->Append(IDM_WINDOWCASCADE, wxT("&Cascade"));
m_windowMenu->Append(IDM_WINDOWTILEHOR, wxT("Tile &Horizontally")); m_windowMenu->Append(IDM_WINDOWTILEHOR, wxT("Tile &Horizontally"));
m_windowMenu->Append(IDM_WINDOWTILEVERT, wxT("Tile &Vertically")); m_windowMenu->Append(IDM_WINDOWTILEVERT, wxT("Tile &Vertically"));
@@ -95,25 +95,25 @@ bool wxMDIParentFrame::Create(wxWindow *parent,
m_windowMenu->Append(IDM_WINDOWICONS, wxT("&Arrange Icons")); m_windowMenu->Append(IDM_WINDOWICONS, wxT("&Arrange Icons"));
m_windowMenu->Append(IDM_WINDOWNEXT, wxT("&Next")); m_windowMenu->Append(IDM_WINDOWNEXT, wxT("&Next"));
} }
wxFrame::Create( parent , id , title , pos , size , style , name ) ; wxFrame::Create( parent , id , title , pos , size , style , name ) ;
m_parentFrameActive = true; m_parentFrameActive = true;
OnCreateClient(); OnCreateClient();
return true; return true;
} }
wxMDIParentFrame::~wxMDIParentFrame() wxMDIParentFrame::~wxMDIParentFrame()
{ {
DestroyChildren(); DestroyChildren();
// already deleted by DestroyChildren() // already deleted by DestroyChildren()
m_clientWindow = NULL ; m_clientWindow = NULL ;
delete m_windowMenu; delete m_windowMenu;
} }
void wxMDIParentFrame::SetMenuBar(wxMenuBar *menu_bar) void wxMDIParentFrame::SetMenuBar(wxMenuBar *menu_bar)
{ {
wxFrame::SetMenuBar( menu_bar ) ; wxFrame::SetMenuBar( menu_bar ) ;
@@ -121,11 +121,12 @@ void wxMDIParentFrame::SetMenuBar(wxMenuBar *menu_bar)
void wxMDIParentFrame::GetRectForTopLevelChildren(int *x, int *y, int *w, int *h) void wxMDIParentFrame::GetRectForTopLevelChildren(int *x, int *y, int *w, int *h)
{ {
if(x) if (x)
*x = 0; *x = 0;
if(y) if (y)
*y = 0; *y = 0;
wxDisplaySize(w,h);
wxDisplaySize(w, h);
} }
void wxMDIParentFrame::AddChild(wxWindowBase *child) void wxMDIParentFrame::AddChild(wxWindowBase *child)
@@ -185,45 +186,51 @@ void wxMDIParentFrame::RemoveChild(wxWindowBase *child)
void wxMDIParentFrame::MacActivate(long timestamp, bool activating) void wxMDIParentFrame::MacActivate(long timestamp, bool activating)
{ {
wxLogTrace(TRACE_MDI, wxT("MDI PARENT=%p MacActivate(0x%08lx,%s)"),this,timestamp,activating?wxT("ACTIV"):wxT("deact")); wxLogTrace(TRACE_MDI, wxT("MDI PARENT=%p MacActivate(0x%08lx,%s)"), this, timestamp, activating ? wxT("ACTIV") : wxT("deact"));
if(activating)
if (activating)
{ {
if(s_macDeactivateWindow && s_macDeactivateWindow->GetParent()==this) if (s_macDeactivateWindow && s_macDeactivateWindow->GetParent() == this)
{ {
wxLogTrace(TRACE_MDI, wxT("child had been scheduled for deactivation, rehighlighting")); wxLogTrace(TRACE_MDI, wxT("child had been scheduled for deactivation, rehighlighting"));
UMAHighlightAndActivateWindow((WindowRef)s_macDeactivateWindow->MacGetWindowRef(), true); UMAHighlightAndActivateWindow((WindowRef)s_macDeactivateWindow->MacGetWindowRef(), true);
wxLogTrace(TRACE_MDI, wxT("done highliting child"));
wxLogTrace(TRACE_MDI, wxT("finished highliting child"));
s_macDeactivateWindow = NULL; s_macDeactivateWindow = NULL;
} }
else if(s_macDeactivateWindow == this) else if (s_macDeactivateWindow == this)
{ {
wxLogTrace(TRACE_MDI, wxT("Avoided deactivation/activation of this=%p"), this); wxLogTrace(TRACE_MDI, wxT("Avoided deactivation/activation of this=%p"), this);
s_macDeactivateWindow = NULL; s_macDeactivateWindow = NULL;
} }
else // window to deactivate is NULL or is not us or one of our kids else // window to deactivate is NULL or is not us or one of our kids
{ {
// activate kid instead // activate kid instead
if(m_currentChild) if (m_currentChild)
m_currentChild->MacActivate(timestamp,activating); m_currentChild->MacActivate(timestamp, activating);
else else
wxFrame::MacActivate(timestamp,activating); wxFrame::MacActivate(timestamp, activating);
} }
} }
else else
{ {
// We were scheduled for deactivation, and now we do it. // We were scheduled for deactivation, and now we do it.
if(s_macDeactivateWindow==this) if (s_macDeactivateWindow == this)
{ {
s_macDeactivateWindow = NULL; s_macDeactivateWindow = NULL;
if(m_currentChild) if (m_currentChild)
m_currentChild->MacActivate(timestamp,activating); m_currentChild->MacActivate(timestamp, activating);
wxFrame::MacActivate(timestamp,activating); wxFrame::MacActivate(timestamp, activating);
} }
else // schedule ourselves for deactivation else // schedule ourselves for deactivation
{ {
if(s_macDeactivateWindow) if (s_macDeactivateWindow)
wxLogTrace(TRACE_MDI, wxT("window=%p SHOULD have been deactivated, oh well!"),s_macDeactivateWindow); wxLogTrace(TRACE_MDI, wxT("window=%p SHOULD have been deactivated, oh well!"), s_macDeactivateWindow);
wxLogTrace(TRACE_MDI, wxT("Scheduling delayed MDI Parent deactivation")); wxLogTrace(TRACE_MDI, wxT("Scheduling delayed MDI Parent deactivation"));
s_macDeactivateWindow = this; s_macDeactivateWindow = this;
} }
} }
@@ -245,6 +252,7 @@ wxMDIChildFrame *wxMDIParentFrame::GetActiveChild() const
wxMDIClientWindow *wxMDIParentFrame::OnCreateClient() wxMDIClientWindow *wxMDIParentFrame::OnCreateClient()
{ {
m_clientWindow = new wxMDIClientWindow( this ); m_clientWindow = new wxMDIClientWindow( this );
return m_clientWindow; return m_clientWindow;
} }
@@ -252,7 +260,7 @@ wxMDIClientWindow *wxMDIParentFrame::OnCreateClient()
void wxMDIParentFrame::OnSysColourChanged(wxSysColourChangedEvent& event) void wxMDIParentFrame::OnSysColourChanged(wxSysColourChangedEvent& event)
{ {
// TODO // TODO
// Propagate the event to the non-top-level children // Propagate the event to the non-top-level children
wxFrame::OnSysColourChanged(event); wxFrame::OnSysColourChanged(event);
} }
@@ -294,9 +302,9 @@ bool wxMDIParentFrame::ShouldBeVisible() const
if ( win->IsShown() if ( win->IsShown()
&& !wxDynamicCast(win, wxMDIChildFrame) && !wxDynamicCast(win, wxMDIChildFrame)
#if wxUSE_STATUSBAR #if wxUSE_STATUSBAR
&& win != GetStatusBar() && win != GetStatusBar()
#endif // wxUSE_STATUSBAR #endif
&& win != GetClientWindow() ) && win != GetClientWindow() )
{ {
// if we have a non-MDI child, do remain visible so that it could // if we have a non-MDI child, do remain visible so that it could
// be used // be used
@@ -321,6 +329,7 @@ bool wxMDIParentFrame::Show( bool show )
// don't make the window visible now but remember that we should // don't make the window visible now but remember that we should
// have had done it // have had done it
m_shouldBeShown = true; m_shouldBeShown = true;
return false; return false;
} }
} }
@@ -341,23 +350,24 @@ void wxMDIChildFrame::Init()
} }
bool wxMDIChildFrame::Create(wxMDIParentFrame *parent, bool wxMDIChildFrame::Create(wxMDIParentFrame *parent,
wxWindowID id, wxWindowID id,
const wxString& title, const wxString& title,
const wxPoint& pos, const wxPoint& pos,
const wxSize& size, const wxSize& size,
long style, long style,
const wxString& name) const wxString& name)
{ {
SetName(name); SetName(name);
if ( id > -1 ) if ( id > -1 )
m_windowId = id; m_windowId = id;
else else
m_windowId = (int)NewControlId(); m_windowId = (int)NewControlId();
if (parent) parent->AddChild(this); if (parent)
parent->AddChild(this);
MacCreateRealWindow( title, pos , size , MacRemoveBordersFromStyle(style) , name ) ;
SetBackgroundColour(wxSystemSettings::GetColour(wxSYS_COLOUR_APPWORKSPACE)); SetBackgroundColour(wxSystemSettings::GetColour(wxSYS_COLOUR_APPWORKSPACE));

View File

@@ -9,13 +9,6 @@
// Licence: wxWindows licence // Licence: wxWindows licence
/////////////////////////////////////////////////////////////////////////////// ///////////////////////////////////////////////////////////////////////////////
// ============================================================================
// declarations
// ============================================================================
// ----------------------------------------------------------------------------
// headers
// ----------------------------------------------------------------------------
#include "wx/wxprec.h" #include "wx/wxprec.h"
#if wxUSE_NOTEBOOK #if wxUSE_NOTEBOOK
@@ -27,18 +20,12 @@
#include "wx/image.h" #include "wx/image.h"
#include "wx/notebook.h" #include "wx/notebook.h"
#include "wx/mac/uma.h" #include "wx/mac/uma.h"
// ----------------------------------------------------------------------------
// macros
// ----------------------------------------------------------------------------
// check that the page index is valid // check that the page index is valid
#define IS_VALID_PAGE(nPage) ((nPage) < GetPageCount()) #define IS_VALID_PAGE(nPage) ((nPage) < GetPageCount())
// ----------------------------------------------------------------------------
// event table
// ----------------------------------------------------------------------------
DEFINE_EVENT_TYPE(wxEVT_COMMAND_NOTEBOOK_PAGE_CHANGED) DEFINE_EVENT_TYPE(wxEVT_COMMAND_NOTEBOOK_PAGE_CHANGED)
DEFINE_EVENT_TYPE(wxEVT_COMMAND_NOTEBOOK_PAGE_CHANGING) DEFINE_EVENT_TYPE(wxEVT_COMMAND_NOTEBOOK_PAGE_CHANGING)
@@ -53,13 +40,6 @@ END_EVENT_TABLE()
IMPLEMENT_DYNAMIC_CLASS(wxNotebook, wxControl) IMPLEMENT_DYNAMIC_CLASS(wxNotebook, wxControl)
IMPLEMENT_DYNAMIC_CLASS(wxNotebookEvent, wxCommandEvent) IMPLEMENT_DYNAMIC_CLASS(wxNotebookEvent, wxCommandEvent)
// ============================================================================
// implementation
// ============================================================================
// ----------------------------------------------------------------------------
// wxNotebook construction
// ----------------------------------------------------------------------------
// common part of all ctors // common part of all ctors
void wxNotebook::Init() void wxNotebook::Init()
@@ -74,63 +54,72 @@ wxNotebook::wxNotebook()
} }
// the same arguments as for wxControl // the same arguments as for wxControl
wxNotebook::wxNotebook(wxWindow *parent, wxNotebook::wxNotebook( wxWindow *parent,
wxWindowID id, wxWindowID id,
const wxPoint& pos, const wxPoint& pos,
const wxSize& size, const wxSize& size,
long style, long style,
const wxString& name) const wxString& name )
{ {
Init(); Init();
Create(parent, id, pos, size, style, name); Create( parent, id, pos, size, style, name );
} }
// Create() function bool wxNotebook::Create( wxWindow *parent,
bool wxNotebook::Create(wxWindow *parent, wxWindowID id,
wxWindowID id, const wxPoint& pos,
const wxPoint& pos, const wxSize& size,
const wxSize& size, long style,
long style, const wxString& name )
const wxString& name)
{ {
m_macIsUserPane = false ; m_macIsUserPane = false ;
if ( !wxNotebookBase::Create(parent, id, pos, size, style, name) ) if ( !wxNotebookBase::Create( parent, id, pos, size, style, name ) )
return false; return false;
Rect bounds = wxMacGetBoundsForControl( this , pos , size ) ; Rect bounds = wxMacGetBoundsForControl( this, pos, size );
if( bounds.right <= bounds.left ) if ( bounds.right <= bounds.left )
bounds.right = bounds.left + 100 ; bounds.right = bounds.left + 100;
if ( bounds.bottom <= bounds.top ) if ( bounds.bottom <= bounds.top )
bounds.bottom = bounds.top + 100 ; bounds.bottom = bounds.top + 100;
UInt16 tabstyle = kControlTabDirectionNorth ; UInt16 tabstyle = kControlTabDirectionNorth;
if ( HasFlag(wxBK_LEFT) ) if ( HasFlag(wxBK_LEFT) )
tabstyle = kControlTabDirectionWest ; tabstyle = kControlTabDirectionWest;
else if ( HasFlag( wxBK_RIGHT ) ) else if ( HasFlag( wxBK_RIGHT ) )
tabstyle = kControlTabDirectionEast ; tabstyle = kControlTabDirectionEast;
else if ( HasFlag( wxBK_BOTTOM ) ) else if ( HasFlag( wxBK_BOTTOM ) )
tabstyle = kControlTabDirectionSouth ; tabstyle = kControlTabDirectionSouth;
ControlTabSize tabsize = kControlTabSizeLarge ; ControlTabSize tabsize;
if ( GetWindowVariant() == wxWINDOW_VARIANT_SMALL ) switch (GetWindowVariant())
tabsize = kControlTabSizeSmall ;
else if ( GetWindowVariant() == wxWINDOW_VARIANT_MINI )
{ {
if (UMAGetSystemVersion() >= 0x1030 ) case wxWINDOW_VARIANT_MINI:
tabsize = 3 ; if ( UMAGetSystemVersion() >= 0x1030 )
else tabsize = 3 ;
tabsize = kControlSizeSmall; else
tabsize = kControlSizeSmall;
break;
case wxWINDOW_VARIANT_SMALL:
tabsize = kControlTabSizeSmall;
break;
default:
tabsize = kControlTabSizeLarge;
break;
} }
m_peer = new wxMacControl(this) ; m_peer = new wxMacControl( this );
verify_noerr ( CreateTabsControl( MAC_WXHWND(parent->MacGetTopLevelWindowRef()) , &bounds , OSStatus err = CreateTabsControl(
tabsize , tabstyle, 0, NULL, m_peer->GetControlRefAddr() ) ); MAC_WXHWND(parent->MacGetTopLevelWindowRef()), &bounds,
tabsize, tabstyle, 0, NULL, m_peer->GetControlRefAddr() );
verify_noerr( err );
MacPostControlCreate( pos, size );
MacPostControlCreate(pos,size) ;
return true ; return true ;
} }
@@ -160,12 +149,12 @@ void wxNotebook::SetPageSize(const wxSize& size)
wxSize wxNotebook::CalcSizeFromPage(const wxSize& sizePage) const wxSize wxNotebook::CalcSizeFromPage(const wxSize& sizePage) const
{ {
return DoGetSizeFromClientSize( sizePage ) ; return DoGetSizeFromClientSize( sizePage );
} }
int wxNotebook::SetSelection(size_t nPage) int wxNotebook::SetSelection(size_t nPage)
{ {
wxCHECK_MSG( IS_VALID_PAGE(nPage), wxNOT_FOUND, wxT("notebook page out of range") ); wxCHECK_MSG( IS_VALID_PAGE(nPage), wxNOT_FOUND, wxT("SetSelection: invalid notebook page") );
if ( int(nPage) != m_nSelection ) if ( int(nPage) != m_nSelection )
{ {
@@ -188,7 +177,7 @@ int wxNotebook::SetSelection(size_t nPage)
bool wxNotebook::SetPageText(size_t nPage, const wxString& strText) bool wxNotebook::SetPageText(size_t nPage, const wxString& strText)
{ {
wxASSERT( IS_VALID_PAGE(nPage) ); wxCHECK_MSG( IS_VALID_PAGE(nPage), false, wxT("SetPageText: invalid notebook page") );
wxNotebookPage *page = m_pages[nPage]; wxNotebookPage *page = m_pages[nPage];
page->SetLabel(strText); page->SetLabel(strText);
@@ -199,25 +188,26 @@ bool wxNotebook::SetPageText(size_t nPage, const wxString& strText)
wxString wxNotebook::GetPageText(size_t nPage) const wxString wxNotebook::GetPageText(size_t nPage) const
{ {
wxASSERT( IS_VALID_PAGE(nPage) ); wxCHECK_MSG( IS_VALID_PAGE(nPage), wxEmptyString, wxT("GetPageText: invalid notebook page") );
wxNotebookPage *page = m_pages[nPage]; wxNotebookPage *page = m_pages[nPage];
return page->GetLabel(); return page->GetLabel();
} }
int wxNotebook::GetPageImage(size_t nPage) const int wxNotebook::GetPageImage(size_t nPage) const
{ {
wxCHECK_MSG( IS_VALID_PAGE(nPage), wxNOT_FOUND, _T("invalid notebook page") ); wxCHECK_MSG( IS_VALID_PAGE(nPage), wxNOT_FOUND, wxT("GetPageImage: invalid notebook page") );
return m_images[nPage]; return m_images[nPage];
} }
bool wxNotebook::SetPageImage(size_t nPage, int nImage) bool wxNotebook::SetPageImage(size_t nPage, int nImage)
{ {
wxCHECK_MSG( IS_VALID_PAGE(nPage), false, _T("invalid notebook page") ); wxCHECK_MSG( IS_VALID_PAGE(nPage), false,
wxT("SetPageImage: invalid notebook page") );
wxCHECK_MSG( m_imageList && nImage < m_imageList->GetImageCount(), false, wxCHECK_MSG( m_imageList && nImage < m_imageList->GetImageCount(), false,
_T("invalid image index in SetPageImage()") ); wxT("SetPageImage: invalid image index") );
if ( nImage != m_images[nPage] ) if ( nImage != m_images[nPage] )
{ {
@@ -239,19 +229,22 @@ bool wxNotebook::SetPageImage(size_t nPage, int nImage)
// remove one page from the notebook, without deleting the window // remove one page from the notebook, without deleting the window
wxNotebookPage* wxNotebook::DoRemovePage(size_t nPage) wxNotebookPage* wxNotebook::DoRemovePage(size_t nPage)
{ {
wxCHECK( IS_VALID_PAGE(nPage), NULL ); wxCHECK_MSG( IS_VALID_PAGE(nPage), NULL,
wxT("DoRemovePage: invalid notebook page") );
wxNotebookPage* page = m_pages[nPage] ; wxNotebookPage* page = m_pages[nPage] ;
m_pages.RemoveAt(nPage); m_pages.RemoveAt(nPage);
MacSetupTabs(); MacSetupTabs();
if(m_nSelection >= (int)GetPageCount()) { if (m_nSelection >= (int)GetPageCount())
m_nSelection = GetPageCount() - 1; m_nSelection = GetPageCount() - 1;
}
if(m_nSelection >= 0) { if (m_nSelection >= 0)
m_pages[m_nSelection]->Show(true); m_pages[m_nSelection]->Show(true);
}
InvalidateBestSize(); InvalidateBestSize();
return page; return page;
} }
@@ -262,38 +255,35 @@ bool wxNotebook::DeleteAllPages()
MacSetupTabs(); MacSetupTabs();
m_nSelection = -1 ; m_nSelection = -1 ;
InvalidateBestSize(); InvalidateBestSize();
return true; return true;
} }
// same as AddPage() but does it at given position // same as AddPage() but does it at given position
bool wxNotebook::InsertPage(size_t nPage, bool wxNotebook::InsertPage(size_t nPage,
wxNotebookPage *pPage, wxNotebookPage *pPage,
const wxString& strText, const wxString& strText,
bool bSelect, bool bSelect,
int imageId) int imageId )
{ {
if ( !wxNotebookBase::InsertPage(nPage, pPage, strText, bSelect, imageId) ) if ( !wxNotebookBase::InsertPage( nPage, pPage, strText, bSelect, imageId ) )
return false; return false;
wxASSERT_MSG( pPage->GetParent() == this, wxASSERT_MSG( pPage->GetParent() == this, wxT("notebook pages must have notebook as parent") );
_T("notebook pages must have notebook as parent") );
// don't show pages by default (we'll need to adjust their size first) // don't show pages by default (we'll need to adjust their size first)
pPage->Show( false ) ; pPage->Show( false ) ;
pPage->SetLabel(strText); pPage->SetLabel( strText );
m_images.Insert(imageId, nPage); m_images.Insert( imageId, nPage );
MacSetupTabs(); MacSetupTabs();
wxRect rect = GetPageRect() ; wxRect rect = GetPageRect() ;
pPage->SetSize(rect); pPage->SetSize( rect );
if ( pPage->GetAutoLayout() ) { if ( pPage->GetAutoLayout() )
pPage->Layout(); pPage->Layout();
}
// now deal with the selection // now deal with the selection
// --------------------------- // ---------------------------
@@ -304,6 +294,7 @@ bool wxNotebook::InsertPage(size_t nPage,
if ( int(nPage) <= m_nSelection ) if ( int(nPage) <= m_nSelection )
{ {
m_nSelection++; m_nSelection++;
// while this still is the same page showing, we need to update the tabs // while this still is the same page showing, we need to update the tabs
m_peer->SetValue( m_nSelection + 1 ) ; m_peer->SetValue( m_nSelection + 1 ) ;
} }
@@ -317,25 +308,23 @@ bool wxNotebook::InsertPage(size_t nPage,
selNew = 0; selNew = 0;
if ( selNew != -1 ) if ( selNew != -1 )
SetSelection(selNew); SetSelection( selNew );
InvalidateBestSize(); InvalidateBestSize();
return true; return true;
} }
int wxNotebook::HitTest(const wxPoint& pt, long * flags) const int wxNotebook::HitTest(const wxPoint& pt, long * flags) const
{ {
int resultV = wxNOT_FOUND; int resultV = wxNOT_FOUND;
#if TARGET_API_MAC_OSX
const int countPages = GetPageCount();
HIPoint hipoint= { pt.x , pt.y } ; #if TARGET_API_MAC_OSX
const int countPages = GetPageCount();
HIPoint hipoint = { pt.x , pt.y } ;
HIViewPartCode outPart = 0 ; HIViewPartCode outPart = 0 ;
OSStatus err = HIViewGetPartHit ( OSStatus err = HIViewGetPartHit( m_peer->GetControlRef(), &hipoint, &outPart );
m_peer->GetControlRef() ,
&hipoint ,
&outPart
);
int max = m_peer->GetMaximum() ; int max = m_peer->GetMaximum() ;
if ( outPart == 0 && max > 0 ) if ( outPart == 0 && max > 0 )
@@ -356,23 +345,15 @@ int wxNotebook::HitTest(const wxPoint& pt, long * flags) const
else else
m_peer->SetValue( 1 ) ; m_peer->SetValue( 1 ) ;
err = HIViewGetPartHit ( err = HIViewGetPartHit( m_peer->GetControlRef(), &hipoint, &outPart );
m_peer->GetControlRef() ,
&hipoint ,
&outPart
);
m_peer->SetValue( val ) ; m_peer->SetValue( val ) ;
if ( max == 1 ) if ( max == 1 )
{
m_peer->SetMaximum( 1 ) ; m_peer->SetMaximum( 1 ) ;
}
} }
if ( outPart >= 1 && outPart <= countPages ) if ( outPart >= 1 && outPart <= countPages )
{
resultV = outPart ; resultV = outPart ;
}
#endif // TARGET_API_MAC_OSX #endif // TARGET_API_MAC_OSX
if (flags != NULL) if (flags != NULL)
@@ -385,14 +366,15 @@ int wxNotebook::HitTest(const wxPoint& pt, long * flags) const
else else
*flags |= wxNB_HITTEST_NOWHERE; *flags |= wxNB_HITTEST_NOWHERE;
} }
return resultV; return resultV;
} }
/* Added by Mark Newsam // Added by Mark Newsam
* When a page is added or deleted to the notebook this function updates // When a page is added or deleted to the notebook this function updates
* information held in the control so that it matches the order // information held in the control so that it matches the order
* the user would expect. // the user would expect.
*/ //
void wxNotebook::MacSetupTabs() void wxNotebook::MacSetupTabs()
{ {
m_peer->SetMaximum( GetPageCount() ) ; m_peer->SetMaximum( GetPageCount() ) ;
@@ -401,43 +383,46 @@ void wxNotebook::MacSetupTabs()
ControlTabInfoRecV1 info; ControlTabInfoRecV1 info;
const size_t countPages = GetPageCount(); const size_t countPages = GetPageCount();
for(size_t ii = 0; ii < countPages; ii++) for (size_t ii = 0; ii < countPages; ii++)
{ {
page = m_pages[ii]; page = m_pages[ii];
info.version = kControlTabInfoVersionOne; info.version = kControlTabInfoVersionOne;
info.iconSuiteID = 0; info.iconSuiteID = 0;
wxMacCFStringHolder cflabel( page->GetLabel() , m_font.GetEncoding() ) ; wxMacCFStringHolder cflabel( page->GetLabel(), m_font.GetEncoding() ) ;
info.name = cflabel ; info.name = cflabel ;
m_peer->SetData<ControlTabInfoRecV1>( ii+1, kControlTabInfoTag, &info ) ; m_peer->SetData<ControlTabInfoRecV1>( ii + 1, kControlTabInfoTag, &info ) ;
if ( GetImageList() && GetPageImage(ii) >= 0 && UMAGetSystemVersion() >= 0x1020 ) if ( GetImageList() && GetPageImage(ii) >= 0 && UMAGetSystemVersion() >= 0x1020 )
{ {
const wxBitmap bmap = GetImageList()->GetBitmap( GetPageImage(ii ) ) ; const wxBitmap bmap = GetImageList()->GetBitmap( GetPageImage( ii ) ) ;
if ( bmap.Ok() ) if ( bmap.Ok() )
{ {
ControlButtonContentInfo info ; ControlButtonContentInfo info ;
wxMacCreateBitmapButton( &info , bmap ) ; wxMacCreateBitmapButton( &info, bmap ) ;
#ifdef __WXDEBUG__
OSStatus err = OSStatus err = m_peer->SetData<ControlButtonContentInfo>( ii + 1, kControlTabImageContentTag, &info );
#endif // __WXDEBUG__
m_peer->SetData<ControlButtonContentInfo>( ii+1,kControlTabImageContentTag, &info );
wxASSERT_MSG( err == noErr , wxT("Error when setting icon on tab") ) ; wxASSERT_MSG( err == noErr , wxT("Error when setting icon on tab") ) ;
wxMacReleaseBitmapButton( &info ) ; wxMacReleaseBitmapButton( &info ) ;
} }
} }
m_peer->SetTabEnabled( ii + 1 , true ) ;
m_peer->SetTabEnabled( ii + 1, true ) ;
} }
Rect bounds; Rect bounds;
m_peer->GetRectInWindowCoords( &bounds ) ; m_peer->GetRectInWindowCoords( &bounds ) ;
InvalWindowRect((WindowRef)MacGetTopLevelWindowRef(), &bounds); InvalWindowRect( (WindowRef)MacGetTopLevelWindowRef(), &bounds );
} }
wxRect wxNotebook::GetPageRect() const wxRect wxNotebook::GetPageRect() const
{ {
wxSize size = GetClientSize() ; wxSize size = GetClientSize() ;
return wxRect( 0 , 0 , size.x , size.y ) ; return wxRect( 0 , 0 , size.x , size.y ) ;
} }
// ---------------------------------------------------------------------------- // ----------------------------------------------------------------------------
// wxNotebook callbacks // wxNotebook callbacks
// ---------------------------------------------------------------------------- // ----------------------------------------------------------------------------
@@ -446,15 +431,15 @@ wxRect wxNotebook::GetPageRect() const
// time because doing it in ::Create() doesn't work (for unknown reasons) // time because doing it in ::Create() doesn't work (for unknown reasons)
void wxNotebook::OnSize(wxSizeEvent& event) void wxNotebook::OnSize(wxSizeEvent& event)
{ {
unsigned int nCount = m_pages.Count(); unsigned int nCount = m_pages.Count();
wxRect rect = GetPageRect() ; wxRect rect = GetPageRect() ;
for ( unsigned int nPage = 0; nPage < nCount; nPage++ ) {
for ( unsigned int nPage = 0; nPage < nCount; nPage++ )
{
wxNotebookPage *pPage = m_pages[nPage]; wxNotebookPage *pPage = m_pages[nPage];
pPage->SetSize(rect); pPage->SetSize(rect);
if ( pPage->GetAutoLayout() ) { if ( pPage->GetAutoLayout() )
pPage->Layout(); pPage->Layout();
}
} }
// Processing continues to next OnSize // Processing continues to next OnSize
@@ -482,11 +467,13 @@ void wxNotebook::OnSetFocus(wxFocusEvent& event)
void wxNotebook::OnNavigationKey(wxNavigationKeyEvent& event) void wxNotebook::OnNavigationKey(wxNavigationKeyEvent& event)
{ {
if ( event.IsWindowChange() ) { if ( event.IsWindowChange() )
{
// change pages // change pages
AdvanceSelection(event.GetDirection()); AdvanceSelection( event.GetDirection() );
} }
else { else
{
// we get this event in 2 cases // we get this event in 2 cases
// //
// a) one of our pages might have generated it because the user TABbed // a) one of our pages might have generated it because the user TABbed
@@ -501,7 +488,8 @@ void wxNotebook::OnNavigationKey(wxNavigationKeyEvent& event)
// from in this case and so can't choose between setting the focus to // from in this case and so can't choose between setting the focus to
// first or last panel child // first or last panel child
wxWindow *parent = GetParent(); wxWindow *parent = GetParent();
// the cast is here to fic a GCC ICE
// the cast is here to fix a GCC ICE
if ( ((wxWindow*)event.GetEventObject()) == parent ) if ( ((wxWindow*)event.GetEventObject()) == parent )
{ {
// no, it doesn't come from child, case (b): forward to a page // no, it doesn't come from child, case (b): forward to a page
@@ -509,10 +497,10 @@ void wxNotebook::OnNavigationKey(wxNavigationKeyEvent& event)
{ {
// so that the page knows that the event comes from it's parent // so that the page knows that the event comes from it's parent
// and is being propagated downwards // and is being propagated downwards
event.SetEventObject(this); event.SetEventObject( this );
wxWindow *page = m_pages[m_nSelection]; wxWindow *page = m_pages[m_nSelection];
if ( !page->GetEventHandler()->ProcessEvent(event) ) if ( !page->GetEventHandler()->ProcessEvent( event ) )
{ {
page->SetFocus(); page->SetFocus();
} }
@@ -527,9 +515,10 @@ void wxNotebook::OnNavigationKey(wxNavigationKeyEvent& event)
else else
{ {
// it comes from our child, case (a), pass to the parent // it comes from our child, case (a), pass to the parent
if ( parent ) { if ( parent )
event.SetCurrentFocus(this); {
parent->GetEventHandler()->ProcessEvent(event); event.SetCurrentFocus( this );
parent->GetEventHandler()->ProcessEvent( event );
} }
} }
} }
@@ -546,7 +535,7 @@ void wxNotebook::OnNavigationKey(wxNavigationKeyEvent& event)
void wxNotebook::SetConstraintSizes(bool WXUNUSED(recurse)) void wxNotebook::SetConstraintSizes(bool WXUNUSED(recurse))
{ {
// don't set the sizes of the pages - their correct size is not yet known // don't set the sizes of the pages - their correct size is not yet known
wxControl::SetConstraintSizes(false); wxControl::SetConstraintSizes( false );
} }
bool wxNotebook::DoPhase(int WXUNUSED(nPhase)) bool wxNotebook::DoPhase(int WXUNUSED(nPhase))
@@ -568,15 +557,16 @@ void wxNotebook::Command(wxCommandEvent& event)
// hide the currently active panel and show the new one // hide the currently active panel and show the new one
void wxNotebook::ChangePage(int nOldSel, int nSel) void wxNotebook::ChangePage(int nOldSel, int nSel)
{ {
if (nOldSel == nSel)
return;
if ( nOldSel != -1 ) if ( nOldSel != -1 )
{ m_pages[nOldSel]->Show( false );
m_pages[nOldSel]->Show(false);
}
if ( nSel != -1 ) if ( nSel != -1 )
{ {
wxNotebookPage *pPage = m_pages[nSel]; wxNotebookPage *pPage = m_pages[nSel];
pPage->Show(true); pPage->Show( true );
pPage->SetFocus(); pPage->SetFocus();
} }
@@ -591,26 +581,29 @@ wxInt32 wxNotebook::MacControlHit(WXEVENTHANDLERREF WXUNUSED(handler) , WXEVENTR
SInt32 newSel = m_peer->GetValue() - 1 ; SInt32 newSel = m_peer->GetValue() - 1 ;
if ( newSel != m_nSelection ) if ( newSel != m_nSelection )
{ {
wxNotebookEvent changing(wxEVT_COMMAND_NOTEBOOK_PAGE_CHANGING, m_windowId, wxNotebookEvent changing(
newSel , m_nSelection); wxEVT_COMMAND_NOTEBOOK_PAGE_CHANGING, m_windowId,
changing.SetEventObject(this); newSel , m_nSelection );
GetEventHandler()->ProcessEvent(changing); changing.SetEventObject( this );
GetEventHandler()->ProcessEvent( changing );
if(changing.IsAllowed()) if ( changing.IsAllowed() )
{ {
wxNotebookEvent event(wxEVT_COMMAND_NOTEBOOK_PAGE_CHANGED, m_windowId, wxNotebookEvent event(
newSel, m_nSelection); wxEVT_COMMAND_NOTEBOOK_PAGE_CHANGED, m_windowId,
event.SetEventObject(this); newSel, m_nSelection );
event.SetEventObject( this );
GetEventHandler()->ProcessEvent(event); GetEventHandler()->ProcessEvent( event );
} }
else else
{ {
m_peer->SetValue( m_nSelection + 1 ) ; m_peer->SetValue( m_nSelection + 1 ) ;
} }
status = noErr ; status = noErr ;
} }
return status ;
return (wxInt32)status ;
} }
#endif #endif