sizes of the sizer items to be in the same proportion as the items
proportions to return to the old behaviour.
+- Interpretation of font height in pixels parameter has changed in wxFont
+ ctor and SetPixelSize() in wxMSW: it is now used as character height and not
+ the total cell height. If you previously used negative height to explicitly
+ request character height matching, you may now change your code to use
+ positive value (passing negative height still works but is undocumented and
+ deprecated). If you used positive height before you should retest your code
+ to check if the changes correspond to your expectations. And if you do need
+ the old behaviour please contact us at wx-dev to let us know about it!
+
- wxWindow::Freeze/Thaw() are not virtual any more, if you overrode them in
your code you need to override DoFreeze/DoThaw() instead now.
void SetPixelSize(const wxSize& pixelSize)
{
+ wxCHECK_RET( pixelSize.GetWidth() >= 0, "negative font width" );
+ wxCHECK_RET( pixelSize.GetHeight() != 0, "zero font height" );
+
Free();
m_nativeFontInfo.SetPixelSize(pixelSize);
void wxNativeFontInfo::SetPixelSize(const wxSize& pixelSize)
{
- // NOTE: although the MSW port allows for negative pixel size heights,
- // other ports don't and since it's a very useful feature assert
- // here if we get a negative height:
- wxCHECK_RET( pixelSize.GetWidth() >= 0 && pixelSize.GetHeight() > 0,
- "Negative values for the pixel size or zero pixel height are not allowed" );
-
- lf.lfHeight = pixelSize.GetHeight();
+ // MSW accepts both positive and negative heights here but they mean
+ // different things: positive specifies the cell height while negative
+ // specifies the character height. We used to just pass the value to MSW
+ // unchanged but changed the behaviour for positive values in 2.9.1 to
+ // match other ports and, more importantly, the expected behaviour. So now
+ // passing the negative height doesn't make sense at all any more but we
+ // still accept it for compatibility with the existing code which worked
+ // around the wrong interpretation of the height argument in older wxMSW
+ // versions by passing a negative value explicitly itself.
+ lf.lfHeight = -abs(pixelSize.GetHeight());
lf.lfWidth = pixelSize.GetWidth();
}