call GetTextExtent() after selecting the correct font into DC in PaintForeground(), fixes label drawing for non default font sizes (part of patch 1683573)
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@45007 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
This commit is contained in:
@@ -402,37 +402,6 @@ void wxStaticBox::PaintForeground(wxDC& dc, const RECT& rc)
|
|||||||
|
|
||||||
// Get dimensions of the label
|
// Get dimensions of the label
|
||||||
const wxString label = GetLabel();
|
const wxString label = GetLabel();
|
||||||
int width, height;
|
|
||||||
dc.GetTextExtent(wxStripMenuCodes(label, wxStrip_Mnemonics),
|
|
||||||
&width, &height);
|
|
||||||
|
|
||||||
int x;
|
|
||||||
int y = height;
|
|
||||||
|
|
||||||
// first we need to correctly paint the background of the label
|
|
||||||
// as Windows ignores the brush offset when doing it
|
|
||||||
//
|
|
||||||
// FIXME: value of x is hardcoded as this is what it is on my system,
|
|
||||||
// no idea if it's true everywhere
|
|
||||||
RECT dimensions = {0, 0, 0, y};
|
|
||||||
if ( !rtl )
|
|
||||||
{
|
|
||||||
x = 9;
|
|
||||||
dimensions.left = x;
|
|
||||||
dimensions.right = x + width;
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
x = rc.right - 7;
|
|
||||||
dimensions.left = x - width;
|
|
||||||
dimensions.right = x;
|
|
||||||
}
|
|
||||||
|
|
||||||
// need to adjust the rectangle to cover all the label background
|
|
||||||
dimensions.left -= 2;
|
|
||||||
dimensions.right += 2;
|
|
||||||
dimensions.bottom += 2;
|
|
||||||
PaintBackground(dc, dimensions);
|
|
||||||
|
|
||||||
// choose the correct font
|
// choose the correct font
|
||||||
AutoHFONT font;
|
AutoHFONT font;
|
||||||
@@ -482,6 +451,40 @@ void wxStaticBox::PaintForeground(wxDC& dc, const RECT& rc)
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Get the font extent
|
||||||
|
int width, height;
|
||||||
|
dc.GetTextExtent(wxStripMenuCodes(label, wxStrip_Mnemonics),
|
||||||
|
&width, &height);
|
||||||
|
|
||||||
|
int x;
|
||||||
|
int y = height;
|
||||||
|
|
||||||
|
// first we need to correctly paint the background of the label
|
||||||
|
// as Windows ignores the brush offset when doing it
|
||||||
|
//
|
||||||
|
// FIXME: value of x is hardcoded as this is what it is on my system,
|
||||||
|
// no idea if it's true everywhere
|
||||||
|
RECT dimensions = {0, 0, 0, y};
|
||||||
|
if ( !rtl )
|
||||||
|
{
|
||||||
|
x = 9;
|
||||||
|
dimensions.left = x;
|
||||||
|
dimensions.right = x + width;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
x = rc.right - 7;
|
||||||
|
dimensions.left = x - width;
|
||||||
|
dimensions.right = x;
|
||||||
|
}
|
||||||
|
|
||||||
|
// need to adjust the rectangle to cover all the label background
|
||||||
|
dimensions.left -= 2;
|
||||||
|
dimensions.right += 2;
|
||||||
|
dimensions.bottom += 2;
|
||||||
|
|
||||||
|
PaintBackground(dc, dimensions);
|
||||||
|
|
||||||
// now draw the text
|
// now draw the text
|
||||||
if ( !rtl )
|
if ( !rtl )
|
||||||
{
|
{
|
||||||
|
Reference in New Issue
Block a user