#include "wx/menuitem.h"
#include "wx/log.h"
+#if wxUSE_CARET
+ #include "wx/caret.h"
+#endif // wxUSE_CARET
+
#define wxWINDOW_HSCROLL 5998
#define wxWINDOW_VSCROLL 5997
#define MAC_SCROLLBAR_SIZE 16
extern wxList wxPendingDelete;
wxWindow* gFocusWindow = NULL ;
-#if !USE_SHARED_LIBRARY
IMPLEMENT_DYNAMIC_CLASS(wxWindow, wxEvtHandler)
BEGIN_EVENT_TABLE(wxWindow, wxEvtHandler)
// EVT_SCROLL(wxWindow::OnScroll)
END_EVENT_TABLE()
-#endif
{
if (gFocusWindow )
{
+ #if wxUSE_CARET
+ // Deal with caret
+ if ( gFocusWindow->m_caret )
+ {
+ gFocusWindow->m_caret->OnKillFocus();
+ }
+ #endif // wxUSE_CARET
wxControl* control = wxDynamicCast( gFocusWindow , wxControl ) ;
if ( control && control->GetMacControl() )
{
UMASetKeyboardFocus( gFocusWindow->GetMacRootWindow() , control->GetMacControl() , kControlFocusNoPart ) ;
}
- wxFocusEvent event(wxEVT_KILL_FOCUS, gFocusWindow->m_windowId);
- event.SetEventObject(gFocusWindow);
+ wxFocusEvent event(wxEVT_KILL_FOCUS, gFocusWindow->m_windowId);
+ event.SetEventObject(gFocusWindow);
gFocusWindow->GetEventHandler()->ProcessEvent(event) ;
}
gFocusWindow = this ;
{
+ #if wxUSE_CARET
+ // Deal with caret
+ if ( m_caret )
+ {
+ m_caret->OnSetFocus();
+ }
+ #endif // wxUSE_CARET
+ // panel wants to track the window which was the last to have focus in it
+ wxPanel *panel = wxDynamicCast(GetParent(), wxPanel);
+ if ( panel )
+ {
+ panel->SetLastFocus(this);
+ }
wxControl* control = wxDynamicCast( gFocusWindow , wxControl ) ;
if ( control && control->GetMacControl() )
{
UMASetKeyboardFocus( gFocusWindow->GetMacRootWindow() , control->GetMacControl() , kControlEditTextPart ) ;
}
- wxFocusEvent event(wxEVT_SET_FOCUS, m_windowId);
- event.SetEventObject(this);
+ wxFocusEvent event(wxEVT_SET_FOCUS, m_windowId);
+ event.SetEventObject(this);
GetEventHandler()->ProcessEvent(event) ;
}
}
}
}
-wxSize wxWindow::DoGetBestSize()
-{
- return wxSize( 0 , 0 ) ;
-}
-bool wxWindow::Reparent(wxWindow *parent)
-{
- if ( !wxWindowBase::Reparent(parent) )
- return FALSE;
- return TRUE;
-}
+
bool wxWindow::DoPopupMenu(wxMenu *menu, int x, int y)
{
UMAHideWindow( m_macWindowData->m_macWindow ) ;
}
}
+ MacSuperShown( show ) ;
Refresh() ;
return TRUE;
}
+void wxWindow::MacSuperShown( bool show )
+{
+ wxNode *node = GetChildren().First();
+ while ( node )
+ {
+ wxWindow *child = (wxWindow *)node->Data();
+ if ( child->m_isShown )
+ child->MacSuperShown( show ) ;
+ node = node->Next();
+ }
+}
+
int wxWindow::GetCharHeight() const
{
wxClientDC dc ( (wxWindow*)this ) ;
void wxWindow::OnEraseBackground(wxEraseEvent& event)
{
// TODO : probably we would adopt the EraseEvent structure
- Default();
}
int wxWindow::GetScrollPos(int orient) const
}
}
+void wxWindow::MacPaint( wxPaintEvent &event )
+{
+ wxPaintDC dc(this);
+ PrepareDC(dc);
+
+ if (HasFlag(wxRAISED_BORDER) || HasFlag( wxSUNKEN_BORDER) )
+ {
+ bool sunken = HasFlag( wxSUNKEN_BORDER ) ;
+
+ wxPen m_penButton3DShadow( wxSystemSettings::GetSystemColour( wxSYS_COLOUR_3DSHADOW ), 1, wxSOLID ) ;
+ wxPen m_penButton3DFace( wxSystemSettings::GetSystemColour( wxSYS_COLOUR_3DFACE ), 1, wxSOLID ) ;
+
+ wxPen wxPen1 = sunken ? *wxWHITE_PEN : *wxBLACK_PEN;
+ wxPen wxPen2 = sunken ? m_penButton3DShadow : m_penButton3DShadow;
+ wxPen wxPen3 = sunken ? m_penButton3DFace : m_penButton3DShadow;
+ wxPen wxPen4 = sunken ? *wxBLACK_PEN : *wxWHITE_PEN;
+
+ dc.SetPen(wxPen1);
+ dc.DrawRectangle(0, 0, m_width, m_height); // outer - right and button
+
+ dc.SetPen(wxPen2);
+ dc.DrawRectangle(1, 1, m_width-1, m_height-1); // outer - left and top
+
+ dc.SetPen(wxPen3);
+ dc.DrawRectangle(0, 0, m_width-2, m_height-2); // inner - right and button
+
+ dc.SetPen(wxPen4);
+ dc.DrawLine(0, 0, m_width-3, 0); // inner - left and top
+ dc.DrawLine(0, 0, 0, m_height-3);
+ }
+ else if (HasFlag(wxSIMPLE_BORDER))
+ {
+ dc.SetPen(*wxBLACK_PEN);
+ dc.DrawRectangle(0, 0, m_width, m_height);
+ }
+}
+
// New function that will replace some of the above.
void wxWindow::SetScrollbar(int orient, int pos, int thumbVisible,
int range, bool refresh)
if ( focus.Ok() )
{
WindowRef window = GetMacRootWindow() ;
+ bool eraseBackground = false ;
+ if ( m_macWindowData )
+ eraseBackground = true ;
if ( m_backgroundColour == wxSystemSettings::GetSystemColour(wxSYS_COLOUR_APPWORKSPACE) )
{
UMASetThemeWindowBackground( window , kThemeBrushDocumentWindowBackground , false ) ;
if ( parent->m_backgroundColour != wxSystemSettings::GetSystemColour(wxSYS_COLOUR_3DFACE ) )
{
// if we have any other colours in the hierarchy
- RGBBackColor( &parent->m_backgroundColour.GetPixel()) ;
- break ;
+ 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);
+ ApplyThemeBackground(kThemeBackgroundTabPane, &(**updatergn).rgnBBox , kThemeStateActive,8,true);
break ;
}
}
{
RGBBackColor( &m_backgroundColour.GetPixel()) ;
}
+ if ( GetParent() && m_backgroundColour != GetParent()->GetBackgroundColour() )
+ eraseBackground = true ;
SetClip( updatergn ) ;
- EraseRgn( updatergn ) ;
+ if ( eraseBackground )
+ {
+ EraseRgn( updatergn ) ;
+ }
}
}
event.m_timeStamp = time ;
event.SetEventObject(this);
+ wxPaintEvent event2( event ) ;
GetEventHandler()->ProcessEvent(event);
+ MacPaint( event2 ) ;
RgnHandle childupdate = NewRgn() ;
}
-
+bool wxWindow::AcceptsFocus() const
+{
+ return MacCanFocus() && wxWindowBase::AcceptsFocus();
+}
ControlHandle wxWindow::MacGetContainerForEmbedding()
{