]> git.saurik.com Git - wxWidgets.git/blobdiff - src/univ/winuniv.cpp
Border styles create a double-border on native search ctrl, just use the one Apple...
[wxWidgets.git] / src / univ / winuniv.cpp
index c5f8c6e654a13f70c2c5b8418092081ea3efc321..41b166cc4d8032e0d1537e58d532b9c6d39bf734 100644 (file)
@@ -92,6 +92,8 @@ public:
     IMPLEMENT_DYNAMIC_CLASS(wxWindow, wxWindowMSW)
 #elif defined(__WXGTK__)
     IMPLEMENT_DYNAMIC_CLASS(wxWindow, wxWindowGTK)
+#elif defined(__WXOSX_OR_COCOA__)
+    IMPLEMENT_DYNAMIC_CLASS(wxWindow, wxWindowMac)
 #elif defined(__WXMGL__)
     IMPLEMENT_DYNAMIC_CLASS(wxWindow, wxWindowMGL)
 #elif defined(__WXDFB__)
@@ -127,7 +129,7 @@ void wxWindow::Init()
 {
 #if wxUSE_SCROLLBAR
     m_scrollbarVert =
-    m_scrollbarHorz = (wxScrollBar *)NULL;
+    m_scrollbarHorz = NULL;
 #endif // wxUSE_SCROLLBAR
 
     m_isCurrent = false;
@@ -145,6 +147,11 @@ bool wxWindow::Create(wxWindow *parent,
                       long style,
                       const wxString& name)
 {
+    // Get default border
+    wxBorder border = GetBorder(style);
+    style &= ~wxBORDER_MASK;
+    style |= border;
+
     long actualStyle = style;
 
     // we add wxCLIP_CHILDREN to get the same ("natural") behaviour under MSW
@@ -217,7 +224,7 @@ bool wxWindow::Create(wxWindow *parent,
 
 wxWindow::~wxWindow()
 {
-    m_isBeingDeleted = true;
+    SendDestroyEvent();
 
 #if wxUSE_SCROLLBAR
     // clear pointers to scrollbar before deleting the children: they are
@@ -359,8 +366,13 @@ bool wxWindow::DoDrawBackground(wxDC& dc)
     rect.height = size.y;
 
     wxWindow * const parent = GetParent();
-    if ( HasTransparentBackground() && parent )
+    if ( HasTransparentBackground() && !UseBgCol() && parent )
     {
+        // DirectFB paints the parent first, then its child windows, so by
+        // the time this code is called, parent's background was already
+        // drawn and there's no point in (imperfectly!) duplicating the work
+        // here:
+#ifndef __WXDFB__
         wxASSERT( !IsTopLevel() );
 
         wxPoint pos = GetPosition();
@@ -383,6 +395,7 @@ bool wxWindow::DoDrawBackground(wxDC& dc)
 
         // Restore DC logical origin
         dc.SetLogicalOrigin( org_x, org_y );
+#endif // !__WXDFB__
     }
     else
     {
@@ -659,7 +672,7 @@ void wxWindow::OnSize(wxSizeEvent& event)
             }
         }
         else
-        if (HasFlag( wxSUNKEN_BORDER ) || HasFlag( wxRAISED_BORDER ))
+        if (HasFlag( wxSUNKEN_BORDER ) || HasFlag( wxRAISED_BORDER ) || HasFlag( wxBORDER_THEME ))
         {
             if (newSize.y > m_oldSize.y)
             {
@@ -1416,10 +1429,10 @@ void wxWindow::OnChar(wxKeyEvent& event)
     if ( !event.HasModifiers() && event.GetKeyCode() == WXK_RETURN )
     {
         wxTopLevelWindow *
-            tlw = wxDynamicCast(wxTopLevelWindow *, wxGetTopLevelParent());
+            tlw = wxDynamicCast(wxGetTopLevelParent(this), wxTopLevelWindow);
         if ( tlw )
         {
-            wxButton *btn = wxDynamicCast(wxButton *, tlw->GetDefaultItem());
+            wxButton *btn = wxDynamicCast(tlw->GetDefaultItem(), wxButton);
             if ( btn )
             {
                 wxCommandEvent evt(wxEVT_COMMAND_BUTTON_CLICKED, btn->GetId());