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:
@@ -308,7 +308,7 @@ void StaticWidgetsPage::CreateContent()
|
|||||||
// NB: must be done _before_ calling CreateStatic()
|
// NB: must be done _before_ calling CreateStatic()
|
||||||
Reset();
|
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")
|
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."));
|
wxT("Only this text is affected by the ellipsize settings."));
|
||||||
m_textLabelWithMarkup->SetValue(wxT("Another label, this time <b>decorated</b> ")
|
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);
|
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
|
// now draw the text
|
||||||
if ( !rtl )
|
if ( !rtl )
|
||||||
{
|
{
|
||||||
RECT rc2 = { x, 0, x + width, y };
|
RECT rc2 = { x, 0, x + width, y };
|
||||||
::DrawText(hdc, label.wx_str(), label.length(), &rc2,
|
::DrawText(hdc, label.wx_str(), label.length(), &rc2,
|
||||||
DT_SINGLELINE | DT_VCENTER);
|
drawTextFlags);
|
||||||
}
|
}
|
||||||
else // RTL
|
else // RTL
|
||||||
{
|
{
|
||||||
RECT rc2 = { x, 0, x - width, y };
|
RECT rc2 = { x, 0, x - width, y };
|
||||||
::DrawText(hdc, label.wx_str(), label.length(), &rc2,
|
::DrawText(hdc, label.wx_str(), label.length(), &rc2,
|
||||||
DT_SINGLELINE | DT_VCENTER | DT_RTLREADING);
|
drawTextFlags | DT_RTLREADING);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
Reference in New Issue
Block a user