]> git.saurik.com Git - wxWidgets.git/blobdiff - src/msw/stattext.cpp
adding new files for xti merge
[wxWidgets.git] / src / msw / stattext.cpp
index a2862c2179ed188b3fe52d2b4a022f72f4311609..572a8f8089828b7e57cd11ff8ceaeaaab86fee4f 100644 (file)
@@ -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());