X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/fab97536810dea903b79322144f9b110368876a6..cc3977bf132d40cb66c6b488890ef67a396d4a0a:/src/msw/stattext.cpp diff --git a/src/msw/stattext.cpp b/src/msw/stattext.cpp index a2862c2179..572a8f8089 100644 --- a/src/msw/stattext.cpp +++ b/src/msw/stattext.cpp @@ -164,6 +164,25 @@ wxSize wxStaticText::DoGetBestClientSize() const widthTextMax += 2; #endif // __WXWINCE__ + // It looks like the static control needs "slightly" more vertical space + // than the character height and while the text isn't actually truncated if + // we use just the minimal height, it is positioned differently than when + // the control has enough space and this result in the text in edit and + // static controls not being aligned when the controls themselves are. As + // this is something you really should be able to count on, increase the + // space allocated for the control so that the base lines do align + // correctly. Notice that while the above is true at least for the single + // line controls, there doesn't seem to do any harm to allocate two extra + // pixels in multi-line case neither so do it always for consistency. + // + // I still have no idea why exactly is this needed nor why should we use 2 + // and not something else. This seems to work in all the configurations + // though (small/large fonts, different OS versions, ...) so just hard code + // it for now. If we need something better later it might be worth looking + // at the height of the text control returned by ::GetComboBoxInfo() as it + // seems to be the "minimal acceptable" height. + heightTextTotal += 2; + return wxSize(widthTextMax, heightTextTotal); } @@ -214,13 +233,13 @@ void wxStaticText::SetLabel(const wxString& label) } #endif // SS_ENDELLIPSIS - // this call will save the label in m_labelOrig and set it into this window - // (through wxWindow::SetLabel) + // save the label in m_labelOrig with both the markup (if any) and + // the mnemonics characters (if any) m_labelOrig = label; #ifdef SS_ENDELLIPSIS if ( styleReal & SS_ENDELLIPSIS ) - DoSetLabel(RemoveMarkup(label)); + DoSetLabel(GetLabelWithoutMarkup()); else #endif // SS_ENDELLIPSIS DoSetLabel(GetEllipsizedLabelWithoutMarkup());