- event.m_x += origin.x ;
- event.m_y += origin.y ;
-*/
-
- event.m_timeStamp = ev->when;
- event.SetEventObject(this);
- if ( wxTheApp->s_captureWindow )
- {
- int x = event.m_x ;
- int y = event.m_y ;
- wxTheApp->s_captureWindow->ScreenToClient( &x , &y ) ;
- event.m_x = x ;
- event.m_y = y ;
- wxTheApp->s_captureWindow->GetEventHandler()->ProcessEvent( event ) ;
- if ( ev->what == mouseUp )
- {
- wxTheApp->s_captureWindow = NULL ;
- if ( wxBusyCursorCount == 0 )
- {
- m_cursor.MacInstall() ;
- }
- }
- }
- else
- {
- MacDispatchMouseEvent( event ) ;
- }
-}
-
-void wxWindow::MacMouseDown( EventRecord *ev , short part)
-{
- MacFireMouseEvent( ev ) ;
-}
-
-void wxWindow::MacMouseUp( EventRecord *ev , short part)
-{
- WindowPtr frontWindow ;
- switch (part)
- {
- case inContent:
- {
- MacFireMouseEvent( ev ) ;
- }
- break ;
- }
-}
-
-void wxWindow::MacMouseMoved( EventRecord *ev , short part)
-{
- WindowPtr frontWindow ;
- switch (part)
- {
- case inContent:
- {
- MacFireMouseEvent( ev ) ;
- }
- break ;
- }
-}
-void wxWindow::MacActivate( EventRecord *ev , bool inIsActivating )
-{
- wxActivateEvent event(wxEVT_ACTIVATE, inIsActivating);
- event.m_timeStamp = ev->when ;
- event.SetEventObject(this);
-
- GetEventHandler()->ProcessEvent(event);
-
- UMAHighlightAndActivateWindow( m_macWindowData->m_macWindow , inIsActivating ) ;
-}
-
-void wxWindow::MacRedraw( RgnHandle updatergn , long time)
-{
- // updatergn is always already clipped to our boundaries
- WindowRef window = GetMacRootWindow() ;
- wxWindow* win = wxFindWinFromMacWindow( window ) ;
- {
- wxMacDrawingClientHelper focus( this ) ;
- if ( focus.Ok() )
- {
- WindowRef window = GetMacRootWindow() ;
- if ( m_backgroundColour == wxSystemSettings::GetSystemColour(wxSYS_COLOUR_APPWORKSPACE) )
- {
- UMASetThemeWindowBackground( window , kThemeBrushDocumentWindowBackground , false ) ;
- }
- else if ( m_backgroundColour == wxSystemSettings::GetSystemColour(wxSYS_COLOUR_3DFACE ) )
- {
- // on mac we have the difficult situation, that 3dface gray can be different colours, depending whether
- // it is on a notebook panel or not, in order to take care of that we walk up the hierarchy until we have
- // either a non gray background color or a non control window
-
-
- wxWindow* parent = GetParent() ;
- while( parent )
- {
- if ( parent->GetMacRootWindow() != window )
- {
- // we are in a different window on the mac system
- parent = NULL ;
- break ;
- }
-
- if( parent->IsKindOf( CLASSINFO( wxControl ) ) && ((wxControl*)parent)->GetMacControl() )
- {
- if ( parent->m_backgroundColour != wxSystemSettings::GetSystemColour(wxSYS_COLOUR_3DFACE ) )
- {
- // if we have any other colours in the hierarchy
- RGBBackColor( &parent->m_backgroundColour.GetPixel()) ;
- break ;
- }
- // if we have the normal colours in the hierarchy but another control etc. -> use it's background
- if ( parent->IsKindOf( CLASSINFO( wxNotebook ) ) || parent->IsKindOf( CLASSINFO( wxTabCtrl ) ))
- {
- ApplyThemeBackground (kThemeBackgroundTabPane, &(**updatergn).rgnBBox , kThemeStateActive,8,true);
- break ;
- }
- }
- else
- {
- parent = NULL ;
- break ;
- }
- parent = parent->GetParent() ;
- }
- if ( !parent )
- {
- // if there is nothing special -> use default
- UMASetThemeWindowBackground( window , kThemeBrushDialogBackgroundActive , false ) ;
- }
- }
- else
- {
- RGBBackColor( &m_backgroundColour.GetPixel()) ;
- }
- SetClip( updatergn ) ;
- EraseRgn( updatergn ) ;
- }
- }
-
-
- m_updateRegion = updatergn ;
- wxPaintEvent event;
- event.m_timeStamp = time ;
- event.SetEventObject(this);
-
- GetEventHandler()->ProcessEvent(event);
-
- RgnHandle childupdate = NewRgn() ;
-
- for (wxNode *node = GetChildren().First(); node; node = node->Next())
- {
- wxWindow *child = (wxWindow*)node->Data();
- int width ;
- int height ;
-
- child->GetClientSize( &width , &height ) ;
-
- SetRectRgn( childupdate , child->m_x , child->m_y , child->m_x +width , child->m_y + height ) ;
- SectRgn( childupdate , m_updateRegion.GetWXHRGN() , childupdate ) ;
- OffsetRgn( childupdate , -child->m_x , -child->m_y ) ;
- if ( child->GetMacRootWindow() == window && child->IsShown() )
- {
- // because dialogs may also be children
- child->MacRedraw( childupdate , time ) ;
- }
- }
- DisposeRgn( childupdate ) ;
- // eventually a draw grow box here
-}
-
-void wxWindow::MacUpdateImmediately()
-{
- WindowRef window = GetMacRootWindow() ;
- if ( window )
- {
- wxWindow* win = wxFindWinFromMacWindow( window ) ;
- BeginUpdate( window ) ;
- if ( win )
- {
- #if ! TARGET_CARBON
- if ( !EmptyRgn( window->visRgn ) )
- #endif
- {
- win->MacRedraw( window->visRgn , wxTheApp->sm_lastMessageTime ) ;
-/*
- {
- wxMacDrawingHelper help( win ) ;
- SetOrigin( 0 , 0 ) ;
- UMASetThemeWindowBackground( win->m_macWindowData->m_macWindow , kThemeBrushDialogBackgroundActive , false ) ;
- UMAUpdateControls( window , window->visRgn ) ;
- UMASetThemeWindowBackground( win->m_macWindowData->m_macWindow , win->m_macWindowData->m_macWindowBackgroundTheme , false ) ;
- }
-*/
- }
- }
- EndUpdate( window ) ;
- }
-}
-
-void wxWindow::MacUpdate( EventRecord *ev )
-{
- WindowRef window = (WindowRef) ev->message ;
- wxWindow * win = wxFindWinFromMacWindow( window ) ;
-
- BeginUpdate( window ) ;
- if ( win )
- {
- // if windowshade gives incompatibility , take the follwing out
- #if ! TARGET_CARBON
- if ( !EmptyRgn( window->visRgn ) )
- #endif
- {
- MacRedraw( window->visRgn , ev->when ) ;
- /*
- {
- wxMacDrawingHelper help( this ) ;
- SetOrigin( 0 , 0 ) ;
- UMASetThemeWindowBackground( m_macWindowData->m_macWindow , kThemeBrushDialogBackgroundActive , false ) ;
- UMAUpdateControls( window , window->visRgn ) ;
- UMASetThemeWindowBackground( m_macWindowData->m_macWindow , m_macWindowData->m_macWindowBackgroundTheme , false ) ;
- }
- */
- }
- }
- EndUpdate( window ) ;
-}
-
-WindowRef wxWindow::GetMacRootWindow() const
-{
- WindowRef window = NULL ;
- wxWindow *iter = (wxWindow*)this ;
-
- while( iter )
- {
- if ( iter->m_macWindowData )
- return iter->m_macWindowData->m_macWindow ;
-
- iter = iter->GetParent() ;
- }
- wxASSERT_MSG( 1 , "No valid mac root window" ) ;
- return NULL ;
-}
-
-void wxWindow::MacCreateScrollBars( long style )
-{
- wxASSERT_MSG( m_vScrollBar == NULL && m_hScrollBar == NULL , "attempt to create window twice" ) ;
- bool hasBoth = ( style & wxVSCROLL ) && ( style & wxHSCROLL ) ;
- int adjust = hasBoth ? MAC_SCROLLBAR_SIZE - 1: 0 ;
-
- if ( style & wxVSCROLL )
- {
- m_vScrollBar = new wxScrollBar(this, wxWINDOW_VSCROLL, wxPoint(m_width-MAC_SCROLLBAR_SIZE, 0),
- wxSize(MAC_SCROLLBAR_SIZE, m_height - adjust), wxVERTICAL);
-// m_vScrollBar->PushEventHandler( this ) ;
- }
- if ( style & wxHSCROLL )
- {
- m_hScrollBar = new wxScrollBar(this, wxWINDOW_HSCROLL, wxPoint(0 , m_height-MAC_SCROLLBAR_SIZE ),
- wxSize( m_width - adjust, MAC_SCROLLBAR_SIZE), wxHORIZONTAL);
-// m_hScrollBar->PushEventHandler( this ) ;
- }
-
- // because the create does not take into account the client area origin
- MacRepositionScrollBars() ; // we might have a real position shift
-}
-
-void wxWindow::MacRepositionScrollBars()
-{
- bool hasBoth = ( m_hScrollBar && m_hScrollBar->IsShown()) && ( m_vScrollBar && m_vScrollBar->IsShown()) ;
- int adjust = hasBoth ? MAC_SCROLLBAR_SIZE - 1 : 0 ;
-
- if ( m_vScrollBar )
- {
- m_vScrollBar->SetSize( m_width-MAC_SCROLLBAR_SIZE, 0, MAC_SCROLLBAR_SIZE, m_height - adjust , wxSIZE_USE_EXISTING);
- }
- if ( m_hScrollBar )
- {
- m_hScrollBar->SetSize( 0 , m_height-MAC_SCROLLBAR_SIZE ,m_width - adjust, MAC_SCROLLBAR_SIZE, wxSIZE_USE_EXISTING);
- }
-}
-
-void wxWindow::MacKeyDown( EventRecord *ev )
-{
-}
-
-
-
-
-ControlHandle wxWindow::MacGetContainerForEmbedding()
-{
- if ( m_macWindowData )
- return m_macWindowData->m_macRootControl ;
- else
- return GetParent()->MacGetContainerForEmbedding() ;
-}
-
-void wxWindow::MacSuperChangedPosition()
-{
- // only window-absolute structures have to be moved i.e. controls
-
- wxNode *node = GetChildren().First();
- while ( node )
- {
- wxWindow *child = (wxWindow *)node->Data();
- child->MacSuperChangedPosition() ;
- node = node->Next();
- }
-}
-
-bool wxWindow::MacSetupFocusPort( )
-{
- Point localOrigin ;
- Rect clipRect ;
- WindowRef window ;
- wxWindow *rootwin ;
- GrafPtr port ;
-
- MacGetPortParams( &localOrigin , &clipRect , &window , &rootwin) ;
- return MacSetPortFocusParams( localOrigin, clipRect, window , rootwin ) ;
-}
-
-bool wxWindow::MacSetupFocusClientPort( )
-{
- Point localOrigin ;
- Rect clipRect ;
- WindowRef window ;
- wxWindow *rootwin ;
- GrafPtr port ;
-
- MacGetPortClientParams( &localOrigin , &clipRect , &window , &rootwin) ;
- return MacSetPortFocusParams( localOrigin, clipRect, window , rootwin ) ;
-}
-
-bool wxWindow::MacSetupDrawingPort( )
-{
- Point localOrigin ;
- Rect clipRect ;
- WindowRef window ;
- wxWindow *rootwin ;
- GrafPtr port ;
-
- MacGetPortParams( &localOrigin , &clipRect , &window , &rootwin) ;
- return MacSetPortDrawingParams( localOrigin, clipRect, window , rootwin ) ;
-}
-
-bool wxWindow::MacSetupDrawingClientPort( )
-{
- Point localOrigin ;
- Rect clipRect ;
- WindowRef window ;
- wxWindow *rootwin ;
- GrafPtr port ;
-
- MacGetPortClientParams( &localOrigin , &clipRect , &window , &rootwin) ;
- return MacSetPortDrawingParams( localOrigin, clipRect, window , rootwin ) ;
-}
-
-
-bool wxWindow::MacSetPortFocusParams( const Point & localOrigin, const Rect & clipRect, WindowRef window , wxWindow* win )
-{
- if ( window == NULL )
- return false ;
-
- GrafPtr currPort;
- GrafPtr port ;
-
- ::GetPort(&currPort);
- port = UMAGetWindowPort( window) ;
- if (currPort != port )
- ::SetPort(port);
-
- ::SetOrigin(-localOrigin.h, -localOrigin.v);
- return true;
-}
-
-bool wxWindow::MacSetPortDrawingParams( const Point & localOrigin, const Rect & clipRect, WindowRef window , wxWindow* win )
-{
- if ( window == NULL )
- return false ;
-
- GrafPtr currPort;
- GrafPtr port ;
- ::GetPort(&currPort);
- port = UMAGetWindowPort( window) ;
- if (currPort != port )
- ::SetPort(port);
-
- ::SetOrigin(-localOrigin.h, -localOrigin.v);
- ::ClipRect(&clipRect);
-
- ::PenNormal() ;
- ::RGBBackColor(& win->GetBackgroundColour().GetPixel() ) ;
- ::RGBForeColor(& win->GetForegroundColour().GetPixel() ) ;
- ::BackPat( &qd.white ) ;
- ::UMASetThemeWindowBackground( win->m_macWindowData->m_macWindow , win->m_macWindowData->m_macWindowBackgroundTheme , false ) ;
- return true;
-}
-
-void wxWindow::MacGetPortParams(Point* localOrigin, Rect* clipRect, WindowRef *window , wxWindow** rootwin)
-{
- if ( m_macWindowData )
- {
- localOrigin->h = 0;
- localOrigin->v = 0;
- clipRect->left = 0;
- clipRect->top = 0;
- clipRect->right = m_width;
- clipRect->bottom = m_height;
- *window = m_macWindowData->m_macWindow ;
- *rootwin = this ;
- }
- else
- {
- wxASSERT( GetParent() != NULL ) ;
- GetParent()->MacGetPortParams( localOrigin , clipRect , window, rootwin) ;
- localOrigin->h += m_x;
- localOrigin->v += m_y;
- OffsetRect(clipRect, -m_x, -m_y);
-
- Rect myClip;
- myClip.left = 0;
- myClip.top = 0;
- myClip.right = m_width;
- myClip.bottom = m_height;
- SectRect(clipRect, &myClip, clipRect);
- }
-}
-
-void wxWindow::MacGetPortClientParams(Point* localOrigin, Rect* clipRect, WindowRef *window , wxWindow** rootwin )
-{
- int width , height ;
- GetClientSize( &width , &height ) ;
-
- if ( m_macWindowData )
- {
- localOrigin->h = 0;
- localOrigin->v = 0;
- clipRect->left = 0;
- clipRect->top = 0;
- clipRect->right = m_width ;//width;
- clipRect->bottom = m_height ;// height;
- *window = m_macWindowData->m_macWindow ;
- *rootwin = this ;
- }
- else
- {
- wxASSERT( GetParent() != NULL ) ;
-
- GetParent()->MacGetPortClientParams( localOrigin , clipRect , window, rootwin) ;
-
- localOrigin->h += m_x;
- localOrigin->v += m_y;
- OffsetRect(clipRect, -m_x, -m_y);
-
- Rect myClip;
- myClip.left = 0;
- myClip.top = 0;
- myClip.right = width;
- myClip.bottom = height;
- SectRect(clipRect, &myClip, clipRect);
- }
-}
-
-wxMacFocusHelper::wxMacFocusHelper( wxWindow * theWindow )
-{
- m_ok = false ;
- Point localOrigin ;
- Rect clipRect ;
- WindowRef window ;
- wxWindow *rootwin ;
- m_currentPort = NULL ;
- GetPort( &m_formerPort ) ;
- if ( theWindow )
- {
-
- theWindow->MacGetPortParams( &localOrigin , &clipRect , &window , &rootwin) ;
- m_currentPort = UMAGetWindowPort( window ) ;
- theWindow->MacSetPortFocusParams( localOrigin, clipRect, window , rootwin ) ;
- m_ok = true ;
- }
-}
-
-wxMacFocusHelper::~wxMacFocusHelper()
-{
- if ( m_ok )
- {
- SetOrigin( 0 , 0 ) ;
- }
- if ( m_formerPort != m_currentPort )
- SetPort( m_formerPort ) ;
-}
-
-wxMacDrawingHelper::wxMacDrawingHelper( wxWindow * theWindow )
-{
- m_ok = false ;
- Point localOrigin ;
- Rect clipRect ;
- WindowRef window ;
- wxWindow *rootwin ;
- m_currentPort = NULL ;
-
- GetPort( &m_formerPort ) ;
- if ( theWindow )
- {
- theWindow->MacGetPortParams( &localOrigin , &clipRect , &window , &rootwin) ;
- m_currentPort = UMAGetWindowPort( window ) ;
- if ( m_formerPort != m_currentPort )
- SetPort( m_currentPort ) ;
- GetPenState( &m_savedPenState ) ;
- theWindow->MacSetPortDrawingParams( localOrigin, clipRect, window , rootwin ) ;
- m_ok = true ;
- }
-}
-
-wxMacDrawingHelper::~wxMacDrawingHelper()
-{
- if ( m_ok )
- {
- SetPenState( &m_savedPenState ) ;
- SetOrigin( 0 , 0 ) ;
- ClipRect( &m_currentPort->portRect ) ;
- }
-
- if ( m_formerPort != m_currentPort )
- SetPort( m_formerPort ) ;
-}
-
-wxMacFocusClientHelper::wxMacFocusClientHelper( wxWindow * theWindow )
-{
- m_ok = false ;
- Point localOrigin ;
- Rect clipRect ;
- WindowRef window ;
- wxWindow *rootwin ;
- m_currentPort = NULL ;
-
- GetPort( &m_formerPort ) ;
-
- if ( theWindow )
- {
- theWindow->MacGetPortClientParams( &localOrigin , &clipRect , &window , &rootwin) ;
- m_currentPort = UMAGetWindowPort( window ) ;
- theWindow->MacSetPortFocusParams( localOrigin, clipRect, window , rootwin ) ;
- m_ok = true ;
- }
-}
-
-wxMacFocusClientHelper::~wxMacFocusClientHelper()
-{
- if ( m_ok )
- {
- SetOrigin( 0 , 0 ) ;
- }
- if ( m_formerPort != m_currentPort )
- SetPort( m_formerPort ) ;
-}
-
-wxMacDrawingClientHelper::wxMacDrawingClientHelper( wxWindow * theWindow )
-{
- m_ok = false ;
- Point localOrigin ;
- Rect clipRect ;
- WindowRef window ;
- wxWindow *rootwin ;
- m_currentPort = NULL ;
-
- GetPort( &m_formerPort ) ;
-
- if ( theWindow )
- {
- theWindow->MacGetPortClientParams( &localOrigin , &clipRect , &window , &rootwin) ;
- m_currentPort = UMAGetWindowPort( window ) ;
- if ( m_formerPort != m_currentPort )
- SetPort( m_currentPort ) ;
- GetPenState( &m_savedPenState ) ;
- theWindow->MacSetPortDrawingParams( localOrigin, clipRect, window , rootwin ) ;
- m_ok = true ;
- }
-}
-
-wxMacDrawingClientHelper::~wxMacDrawingClientHelper()
-{
- if ( m_ok )
- {
- SetPenState( &m_savedPenState ) ;
- SetOrigin( 0 , 0 ) ;
- ClipRect( &m_currentPort->portRect ) ;
- }
-
- if ( m_formerPort != m_currentPort )
- SetPort( m_formerPort ) ;