X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/f8e3449ceb699ff2f2ecc7670e8d68d42acff77a..16d38102e8ad5534d185cc532b9aa8077a75e0a4:/src/univ/topluniv.cpp diff --git a/src/univ/topluniv.cpp b/src/univ/topluniv.cpp index aa67c1fafe..556873599f 100644 --- a/src/univ/topluniv.cpp +++ b/src/univ/topluniv.cpp @@ -76,8 +76,10 @@ bool wxTopLevelWindow::Create(wxWindow *parent, exstyleOrig = 0; if ( ms_drawDecorations == -1 ) - ms_drawDecorations = !wxSystemSettings::HasFrameDecorations(); + ms_drawDecorations = !wxSystemSettings::HasFrameDecorations() || + wxGetEnv(wxT("WXDECOR"), NULL); // FIXME -- wxUniv should provide a way to force non-native decorations! + // $WXDECOR is just a hack in absence of better wxUniv solution if ( ms_drawDecorations ) { @@ -97,15 +99,6 @@ bool wxTopLevelWindow::Create(wxWindow *parent, size, style, name) ) return FALSE; - // FIXME: to be removed as soon as wxTLW/wxFrame/wxDialog creation code in - // wxMSW is rationalized -#ifdef __WXMSW__ - extern const wxChar *wxFrameClassName; - if ( !MSWCreate(id, NULL, wxFrameClassName, this, title, - pos.x, pos.y, size.x, size.y, style) ) - return FALSE; -#endif // __WXMSW__ - if ( ms_drawDecorations ) { m_windowStyle = styleOrig; @@ -148,7 +141,12 @@ long wxTopLevelWindow::GetDecorationsStyle() const if ( m_windowStyle & wxMINIMIZE_BOX ) style |= wxTOPLEVEL_BUTTON_ICONIZE; if ( m_windowStyle & wxMAXIMIZE_BOX ) - style |= wxTOPLEVEL_BUTTON_MAXIMIZE; + { + if ( IsMaximized() ) + style |= wxTOPLEVEL_BUTTON_RESTORE; + else + style |= wxTOPLEVEL_BUTTON_MAXIMIZE; + } #if wxUSE_HELP if ( m_exStyle & (wxFRAME_EX_CONTEXTHELP | wxDIALOG_EX_CONTEXTHELP)) style |= wxTOPLEVEL_BUTTON_HELP; @@ -268,25 +266,27 @@ long wxTopLevelWindow::HitTest(const wxPoint& pt) const void wxTopLevelWindow::SetIcon(const wxIcon& icon) { wxTopLevelWindowNative::SetIcon(icon); - if ( !m_renderer ) return; - - wxSize size = m_renderer->GetFrameIconSize(); - if ( !icon.Ok() || size.x == -1 ) - m_titlebarIcon = icon; - else + if ( ms_drawDecorations && m_renderer ) { - wxBitmap bmp1; - bmp1.CopyFromIcon(icon); - if ( !bmp1.Ok() ) - m_titlebarIcon = wxNullIcon; - else if ( bmp1.GetWidth() == size.x && bmp1.GetHeight() == size.y ) + wxSize size = m_renderer->GetFrameIconSize(); + + if ( !icon.Ok() || size.x == -1 ) m_titlebarIcon = icon; else { - wxImage img = bmp1.ConvertToImage(); - img.Rescale(size.x, size.y); - m_titlebarIcon.CopyFromBitmap(wxBitmap(img)); + wxBitmap bmp1; + bmp1.CopyFromIcon(icon); + if ( !bmp1.Ok() ) + m_titlebarIcon = wxNullIcon; + else if ( bmp1.GetWidth() == size.x && bmp1.GetHeight() == size.y ) + m_titlebarIcon = icon; + else + { + wxImage img = bmp1.ConvertToImage(); + img.Rescale(size.x, size.y); + m_titlebarIcon.CopyFromBitmap(wxBitmap(img)); + } } } }