Correct drawing of mnemonics in wxStaticBox label under wxMSW.
Only show the mnemonics if they need to be shown, i.e. use the same logic as the standard controls use, to avoid showing mnemonics in wxStaticBox with custom label colour even when other wxStaticBoxes don't show it. git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@65580 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
This commit is contained in:
parent
2af006ebd3
commit
b4607e897c
@ -308,7 +308,7 @@ void StaticWidgetsPage::CreateContent()
|
||||
// NB: must be done _before_ calling CreateStatic()
|
||||
Reset();
|
||||
|
||||
m_textBox->SetValue(wxT("This is a box"));
|
||||
m_textBox->SetValue(wxT("This is a &box"));
|
||||
m_textLabel->SetValue(wxT("And this is a\n\tlabel inside the box with a &mnemonic.\n")
|
||||
wxT("Only this text is affected by the ellipsize settings."));
|
||||
m_textLabelWithMarkup->SetValue(wxT("Another label, this time <b>decorated</b> ")
|
||||
|
@ -512,18 +512,32 @@ void wxStaticBox::PaintForeground(wxDC& dc, const RECT& rc)
|
||||
PaintBackground(dc, dimensions);
|
||||
}
|
||||
|
||||
UINT drawTextFlags = DT_SINGLELINE | DT_VCENTER;
|
||||
|
||||
// determine the state of UI queues to draw the text correctly under XP
|
||||
// and later systems
|
||||
static const bool isXPorLater = wxGetWinVersion() >= wxWinVersion_XP;
|
||||
if ( isXPorLater )
|
||||
{
|
||||
if ( ::SendMessage(GetHwnd(), WM_QUERYUISTATE, 0, 0) &
|
||||
UISF_HIDEACCEL )
|
||||
{
|
||||
drawTextFlags |= DT_HIDEPREFIX;
|
||||
}
|
||||
}
|
||||
|
||||
// now draw the text
|
||||
if ( !rtl )
|
||||
{
|
||||
RECT rc2 = { x, 0, x + width, y };
|
||||
::DrawText(hdc, label.wx_str(), label.length(), &rc2,
|
||||
DT_SINGLELINE | DT_VCENTER);
|
||||
drawTextFlags);
|
||||
}
|
||||
else // RTL
|
||||
{
|
||||
RECT rc2 = { x, 0, x - width, y };
|
||||
::DrawText(hdc, label.wx_str(), label.length(), &rc2,
|
||||
DT_SINGLELINE | DT_VCENTER | DT_RTLREADING);
|
||||
drawTextFlags | DT_RTLREADING);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user