extern wxList wxPendingDelete;
wxWindowMac* gFocusWindow = NULL ;
+#ifdef __WXUNIVERSAL__
+ IMPLEMENT_ABSTRACT_CLASS(wxWindowMac, wxWindowBase)
+#else // __WXMAC__
+ IMPLEMENT_DYNAMIC_CLASS(wxWindow, wxWindowBase)
+#endif // __WXUNIVERSAL__/__WXMAC__
+
#if !USE_SHARED_LIBRARY
-IMPLEMENT_DYNAMIC_CLASS(wxWindowMac, wxEvtHandler)
-BEGIN_EVENT_TABLE(wxWindowMac, wxEvtHandler)
+
+BEGIN_EVENT_TABLE(wxWindowMac, wxWindowBase)
EVT_ERASE_BACKGROUND(wxWindowMac::OnEraseBackground)
EVT_SYS_COLOUR_CHANGED(wxWindowMac::OnSysColourChanged)
EVT_INIT_DIALOG(wxWindowMac::OnInitDialog)
// Get total size
void wxWindowMac::DoGetSize(int *x, int *y) const
{
- *x = m_width ;
- *y = m_height ;
+ if(x) *x = m_width ;
+ if(y) *y = m_height ;
}
void wxWindowMac::DoGetPosition(int *x, int *y) const
{
- *x = m_x ;
- *y = m_y ;
+ int xx,yy;
+
+ xx = m_x ;
+ yy = m_y ;
if (GetParent())
{
wxPoint pt(GetParent()->GetClientAreaOrigin());
- *x -= pt.x;
- *y -= pt.y;
+ xx -= pt.x;
+ yy -= pt.y;
}
+ if(x) *x = xx;
+ if(y) *y = yy;
}
#if wxUSE_MENUS
{
WindowRef window = GetMacRootWindow() ;
- Point localwhere ;
- localwhere.h = * x ;
- localwhere.v = * y ;
+ Point localwhere = {0,0} ;
+
+ if(x) localwhere.h = * x ;
+ if(y) localwhere.v = * y ;
GrafPtr port ;
::GetPort( &port ) ;
::GlobalToLocal( &localwhere ) ;
::SetPort( port ) ;
- *x = localwhere.h ;
- *y = localwhere.v ;
+ if(x) *x = localwhere.h ;
+ if(y) *y = localwhere.v ;
MacRootWindowToClient( x , y ) ;
}
MacClientToRootWindow( x , y ) ;
- Point localwhere ;
- localwhere.h = * x ;
- localwhere.v = * y ;
+ Point localwhere = { 0,0 };
+ if(x) localwhere.h = * x ;
+ if(y) localwhere.v = * y ;
GrafPtr port ;
::GetPort( &port ) ;
::SetOrigin( 0 , 0 ) ;
::LocalToGlobal( &localwhere ) ;
::SetPort( port ) ;
- *x = localwhere.h ;
- *y = localwhere.v ;
+ if(x) *x = localwhere.h ;
+ if(y) *y = localwhere.v ;
}
void wxWindowMac::MacClientToRootWindow( int *x , int *y ) const
{
- if ( m_macWindowData )
+ if ( m_macWindowData == NULL)
{
- }
- else
- {
- *x += m_x ;
- *y += m_y ;
+ if(x) *x += m_x ;
+ if(y) *y += m_y ;
GetParent()->MacClientToRootWindow( x , y ) ;
}
}
void wxWindowMac::MacRootWindowToClient( int *x , int *y ) const
{
- if ( m_macWindowData )
+ if ( m_macWindowData == NULL)
{
- }
- else
- {
- *x -= m_x ;
- *y -= m_y ;
+ if(x) *x -= m_x ;
+ if(y) *y -= m_y ;
GetParent()->MacRootWindowToClient( x , y ) ;
}
}
// Get size *available for subwindows* i.e. excluding menu bar etc.
void wxWindowMac::DoGetClientSize(int *x, int *y) const
{
- *x = m_width ;
- *y = m_height ;
+ int ww, hh;
+ ww = m_width ;
+ hh = m_height ;
- *x -= MacGetLeftBorderSize( ) + MacGetRightBorderSize( ) ;
- *y -= MacGetTopBorderSize( ) + MacGetBottomBorderSize( );
+ ww -= MacGetLeftBorderSize( ) + MacGetRightBorderSize( ) ;
+ hh -= MacGetTopBorderSize( ) + MacGetBottomBorderSize( );
if ( (m_vScrollBar && m_vScrollBar->IsShown()) || (m_hScrollBar && m_hScrollBar->IsShown()) )
{
MacClientToRootWindow( &x1 , &y1 ) ;
MacClientToRootWindow( &w , &h ) ;
- WindowRef window = NULL ;
wxWindowMac *iter = (wxWindowMac*)this ;
int totW = 10000 , totH = 10000;
if (m_hScrollBar && m_hScrollBar->IsShown() )
{
- (*y) -= MAC_SCROLLBAR_SIZE;
+ hh -= MAC_SCROLLBAR_SIZE;
if ( h-y1 >= totH )
{
- (*y)+= 1 ;
+ hh += 1 ;
}
}
if (m_vScrollBar && m_vScrollBar->IsShown() )
{
- (*x) -= MAC_SCROLLBAR_SIZE;
+ ww -= MAC_SCROLLBAR_SIZE;
if ( w-x1 >= totW )
{
- (*x) += 1 ;
+ ww += 1 ;
}
}
}
+ if(x) *x = ww;
+ if(y) *y = hh;
}
}
if ( doResize )
{
- MacRepositionScrollBars() ;
- wxSize size(m_width, m_height);
- wxSizeEvent event(size, m_windowId);
- event.SetEventObject(this);
- GetEventHandler()->ProcessEvent(event);
+ MacRepositionScrollBars() ;
+ wxSize size(m_width, m_height);
+ wxSizeEvent event(size, m_windowId);
+ event.SetEventObject(this);
+ GetEventHandler()->ProcessEvent(event);
}
}
}
{
WindowRef window = GetMacRootWindow() ;
wxWindowMac* win = wxFindWinFromMacWindow( window ) ;
- if ( !win->m_isBeingDeleted )
+ if ( win && !win->m_isBeingDeleted )
Refresh() ;
}
else
void wxWindowMac::MacMouseUp( EventRecord *ev , short part)
{
- WindowPtr frontWindow ;
switch (part)
{
case inContent:
void wxWindowMac::MacMouseMoved( EventRecord *ev , short part)
{
- WindowPtr frontWindow ;
switch (part)
{
case inContent:
// ownUpdateRgn is the area that this window has to invalidate i.e. its own area without its children
RgnHandle ownUpdateRgn = NewRgn() ;
CopyRgn( updatergn , ownUpdateRgn ) ;
- wxWindowMac* win = wxFindWinFromMacWindow( window ) ;
+
{
wxMacDrawingHelper focus( this ) ; // was client
if ( focus.Ok() )
WindowRef wxWindowMac::GetMacRootWindow() const
{
- WindowRef window = NULL ;
wxWindowMac *iter = (wxWindowMac*)this ;
while( iter )
MacClientToRootWindow( &x , &y ) ;
MacClientToRootWindow( &w , &h ) ;
- WindowRef window = NULL ;
wxWindowMac *iter = (wxWindowMac*)this ;
int totW = 10000 , totH = 10000;