From 441dfa1d99912c0b5fd1568efe9ff9df96656819 Mon Sep 17 00:00:00 2001 From: Vadim Zeitlin Date: Thu, 22 Mar 2007 02:25:25 +0000 Subject: [PATCH] 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 --- src/msw/statbox.cpp | 65 ++++++++++++++++++++++++--------------------- 1 file changed, 34 insertions(+), 31 deletions(-) diff --git a/src/msw/statbox.cpp b/src/msw/statbox.cpp index 40b841f56a..ffb1b61f2d 100644 --- a/src/msw/statbox.cpp +++ b/src/msw/statbox.cpp @@ -402,37 +402,6 @@ void wxStaticBox::PaintForeground(wxDC& dc, const RECT& rc) // Get dimensions of the label 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 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 if ( !rtl ) { -- 2.45.2