X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/c4e1d0fc473f5213a2ea68a5eaa305f0a7164094..cc24bf919256e8e1d317dbb8e67df6d007d641ea:/src/msw/button.cpp diff --git a/src/msw/button.cpp b/src/msw/button.cpp index 01ebb8539b..64e4790923 100644 --- a/src/msw/button.cpp +++ b/src/msw/button.cpp @@ -182,8 +182,7 @@ bool wxButton::Create(wxWindow *parent, // black boxes) // // NB: we do it here and not in MSWGetStyle() because we need the label - // value and m_label is not set yet when MSWGetStyle() is called; - // besides changing BS_MULTILINE during run-time is pointless anyhow + // value and the label is not set yet when MSWGetStyle() is called if ( label.find(_T('\n')) != wxString::npos ) { msStyle |= BS_MULTILINE; @@ -237,6 +236,25 @@ WXDWORD wxButton::MSWGetStyle(long style, WXDWORD *exstyle) const return msStyle; } +void wxButton::SetLabel(const wxString& label) +{ + // update BS_MULTILINE style depending on the new label (resetting it + // doesn't seem to do anything very useful but it shouldn't hurt and we do + // have to set it whenever the label becomes multi line as otherwise it + // wouldn't be shown correctly) + long styleOld = ::GetWindowLong(GetHwnd(), GWL_STYLE), + styleNew; + if ( label.find(_T('\n')) != wxString::npos ) + styleNew = styleOld | BS_MULTILINE; + else + styleNew = styleOld & ~BS_MULTILINE; + + if ( styleNew != styleOld ) + ::SetWindowLong(GetHwnd(), GWL_STYLE, styleNew); + + wxButtonBase::SetLabel(label); +} + // ---------------------------------------------------------------------------- // size management including autosizing // ----------------------------------------------------------------------------