+void wxWindow::MacCreateRealWindow( const wxString& title,
+ const wxPoint& pos,
+ const wxSize& size,
+ long style,
+ const wxString& name )
+{
+ SetName(name);
+ m_windowStyle = style;
+ m_isShown = FALSE;
+
+ // create frame.
+
+ Rect theBoundsRect;
+
+ m_x = (int)pos.x;
+ m_y = (int)pos.y;
+ if ( m_y < 50 )
+ m_y = 50 ;
+ if ( m_x < 20 )
+ m_x = 20 ;
+
+ m_width = size.x;
+ if (m_width == -1)
+ m_width = 20;
+ m_height = size.y;
+ if (m_height == -1)
+ m_height = 20;
+
+ m_macWindowData = new MacWindowData() ;
+
+ ::SetRect(&theBoundsRect, m_x, m_y , m_x + m_width, m_y + m_height);
+
+ // translate the window attributes in the appropriate window class and attributes
+
+ WindowClass wclass ;
+ WindowAttributes attr ;
+
+ if ( HasFlag(wxTINY_CAPTION_HORIZ) || HasFlag(wxTINY_CAPTION_VERT) )
+ {
+ wclass = kFloatingWindowClass ;
+ if ( HasFlag(wxTINY_CAPTION_VERT) )
+ {
+ attr |= kWindowSideTitlebarAttribute ;
+ }
+ }
+ else if ( HasFlag( wxTHICK_FRAME ) )
+ {
+ if ( HasFlag( wxDIALOG_MODAL ) )
+ {
+ wclass = kMovableModalWindowClass ;
+ }
+ else if ( HasFlag( wxDIALOG_MODELESS ) )
+ {
+ wclass = kDocumentWindowClass ;
+ }
+ else
+ {
+ if ( HasFlag( wxCAPTION ) )
+ {
+ wclass = kDocumentWindowClass ;
+ }
+ else
+ {
+ wclass = kModalWindowClass ;
+ }
+ }
+ }
+ else
+ {
+ wclass = kModalWindowClass ;
+ }
+
+ attr = kWindowNoAttributes ;
+
+ if ( HasFlag( wxMINIMIZE_BOX ) || HasFlag( wxMAXIMIZE_BOX ) )
+ {
+ attr |= kWindowFullZoomAttribute ;
+ attr |= kWindowCollapseBoxAttribute ;
+ }
+ if ( HasFlag( wxRESIZE_BORDER ) )
+ {
+ attr |= kWindowResizableAttribute ;
+ }
+ if ( HasFlag( wxSYSTEM_MENU ) )
+ {
+ attr |= kWindowCloseBoxAttribute ;
+ }
+
+ UMACreateNewWindow( wclass , attr , &theBoundsRect , &m_macWindowData->m_macWindow ) ;
+ wxAssociateWinWithMacWindow( m_macWindowData->m_macWindow , this ) ;
+ wxString label ;
+ if( wxApp::s_macDefaultEncodingIsPC )
+ label = wxMacMakeMacStringFromPC( title ) ;
+ else
+ label = title ;
+ UMASetWTitleC( m_macWindowData->m_macWindow , label ) ;
+ UMACreateRootControl( m_macWindowData->m_macWindow , &m_macWindowData->m_macRootControl ) ;
+
+ m_macWindowData->m_macFocus = NULL ;
+}
+
+void wxWindow::MacPaint( wxPaintEvent &event )
+{
+}
+
+void wxWindow::MacPaintBorders( )
+{
+ if( m_macWindowData )
+ return ;
+
+ RGBColor white = { 0xFFFF, 0xFFFF , 0xFFFF } ;
+ RGBColor black = { 0x0000, 0x0000 , 0x0000 } ;
+ RGBColor face = { 0xDDDD, 0xDDDD , 0xDDDD } ;
+ RGBColor shadow = { 0x4444, 0x4444 , 0x4444 } ;
+ PenNormal() ;
+
+ if (HasFlag(wxRAISED_BORDER) || HasFlag( wxSUNKEN_BORDER) || HasFlag(wxDOUBLE_BORDER) )
+ {
+ bool sunken = HasFlag( wxSUNKEN_BORDER ) ;
+ RGBColor pen1 = sunken ? white : black ;
+ RGBColor pen2 = sunken ? shadow : face ;
+ RGBColor pen3 = sunken ? face : shadow ;
+ RGBColor pen4 = sunken ? black : white ;
+
+ RGBForeColor( &pen1 ) ;
+ {
+ Rect rect = { 0 , 0 , m_height , m_width } ;
+ FrameRect( &rect ) ;
+ }
+ RGBForeColor( &pen2 ) ;
+ {
+ Rect rect = { 1 , 1 , m_height -1 , m_width -1} ;
+ FrameRect( &rect ) ;
+ }
+ RGBForeColor( &pen3 ) ;
+ {
+ Rect rect = { 0 , 0 , m_height -2 , m_width -2} ;
+ FrameRect( &rect ) ;
+ }
+ RGBForeColor( &pen4 ) ;
+ {
+ MoveTo( 0 , 0 ) ;
+ LineTo( m_width - 3 , 0 ) ;
+ MoveTo( 0 , 0 ) ;
+ LineTo( 0 , m_height - 3 ) ;
+ }
+ }
+ else if (HasFlag(wxSIMPLE_BORDER))
+ {
+ Rect rect = { 0 , 0 , m_height , m_width } ;
+ RGBForeColor( &black ) ;
+ FrameRect( &rect ) ;
+ }
+/*
+ if ( this->GetParent() )
+ {
+ wxPaintDC dc(GetParent());
+ GetParent()->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(m_x, m_y, m_width, m_height); // outer - right and button
+
+ dc.SetPen(wxPen2);
+ dc.DrawRectangle(m_x+1, m_y+1, m_width-1, m_height-1); // outer - left and top
+
+ dc.SetPen(wxPen3);
+ dc.DrawRectangle(m_x, m_y, m_width-2, m_height-2); // inner - right and button
+
+ dc.SetPen(wxPen4);
+ dc.DrawLine(m_x, m_y, m_x + m_width-3, m_y); // inner - left and top
+ dc.DrawLine(m_x, m_y, m_x, m_y + m_height-3);
+ }
+ else if (HasFlag(wxDOUBLE_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(m_x, m_y, m_width, m_height); // outer - right and button
+
+ dc.SetPen(wxPen2);
+ dc.DrawRectangle(m_x+1, m_y+1, m_width-1, m_height-1); // outer - left and top
+
+ dc.SetPen(wxPen3);
+ dc.DrawRectangle(m_x, m_y, m_width-2, m_height-2); // inner - right and button
+
+ dc.SetPen(wxPen4);
+ dc.DrawLine(m_x, m_y, m_x + m_width-3, m_y); // inner - left and top
+ dc.DrawLine(m_x, m_y, m_x, m_y + m_height-3);
+ }
+ else if (HasFlag(wxSIMPLE_BORDER))
+ {
+ dc.SetPen(*wxBLACK_PEN);
+ dc.DrawRectangle(m_x, m_y, m_width, m_height);
+ }
+ }
+ */
+}
+