]> git.saurik.com Git - wxWidgets.git/blobdiff - src/univ/winuniv.cpp
fix for crash under wxX11: we get text event there when m_popup is still NULL
[wxWidgets.git] / src / univ / winuniv.cpp
index c5f8c6e654a13f70c2c5b8418092081ea3efc321..bea3acdaf1054b8d819516b8d54fe1f612a23b11 100644 (file)
@@ -145,6 +145,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
@@ -359,8 +364,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 +393,7 @@ bool wxWindow::DoDrawBackground(wxDC& dc)
 
         // Restore DC logical origin
         dc.SetLogicalOrigin( org_x, org_y );
+#endif // !__WXDFB__
     }
     else
     {
@@ -659,7 +670,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 +1427,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());