diff --git a/src/generic/grid.cpp b/src/generic/grid.cpp index 13106ec3f0..d3fed3f57d 100644 --- a/src/generic/grid.cpp +++ b/src/generic/grid.cpp @@ -6176,15 +6176,9 @@ void wxGrid::DrawCell( wxDC& dc, const wxGridCellCoords& coords ) // Note: However, only if it is really _shown_, i.e. not hidden! if ( isCurrent && IsCellEditControlShown() ) { - // NB: this "#if..." is temporary and fixes a problem where the - // edit control is erased by this code after being rendered. - // On wxMac (QD build only), the cell editor is a wxTextCntl and is rendered - // implicitly, causing this out-of order render. -#if !defined(__WXMAC__) wxGridCellEditor *editor = attr->GetEditor(this, row, col); editor->PaintBackground(dc, rect, *attr); editor->DecRef(); -#endif } else { diff --git a/src/osx/cocoa/nonownedwnd.mm b/src/osx/cocoa/nonownedwnd.mm index 95319f6ce5..c118d47b08 100644 --- a/src/osx/cocoa/nonownedwnd.mm +++ b/src/osx/cocoa/nonownedwnd.mm @@ -939,9 +939,13 @@ void wxNonOwnedWindowCocoaImpl::SetWindowStyleFlag( long style ) level = NSModalPanelWindowLevel; else if (( style & wxFRAME_FLOAT_ON_PARENT ) || ( style & wxFRAME_TOOL_WINDOW )) level = NSFloatingWindowLevel; - - [m_macWindow setLevel: level]; - m_macWindowLevel = level; + + // Only update the level when it has changed, setting a level can cause the OS to reorder the windows in the level + if ( level != m_macWindowLevel ) + { + [m_macWindow setLevel: level]; + m_macWindowLevel = level; + } } } diff --git a/src/osx/dataview_osx.cpp b/src/osx/dataview_osx.cpp index 60e57b70f2..0bee2da4fa 100644 --- a/src/osx/dataview_osx.cpp +++ b/src/osx/dataview_osx.cpp @@ -365,6 +365,10 @@ bool wxDataViewCtrl::Create(wxWindow *parent, const wxValidator& validator, const wxString& name) { + // Remove wxVSCROLL and wxHSCROLL from the style, since the dataview panel has scrollbars + // by default, and wxControl::Create trys to make some but crashes in the process + style &= ~(wxVSCROLL | wxHSCROLL); + DontCreatePeer(); if (!(wxControl::Create(parent,id,pos,size,style,validator,name))) return false;