Don't call GetTextExtent() if we don't use its result
It's unnecessary to call GetTextExtent() just to discard/overwrite its result immediately with the value returned from DTM_GETIDEALSIZE, so don't do it. This reverts another part ofa98d8448fa
(Fix size of wxDateTimePickerCtrl after DPI change, 2019-01-13) which wasn't done in7de85d7470
(Restore correct best width of wxDatePickerCtrl in MSW, 2020-05-24).included This commit is best viewed ignoring whitespace-only changes.
This commit is contained in:
@@ -162,20 +162,7 @@ void wxDateTimePickerCtrl::SetNullText(const wxString& text)
|
|||||||
|
|
||||||
wxSize wxDateTimePickerCtrl::DoGetBestSize() const
|
wxSize wxDateTimePickerCtrl::DoGetBestSize() const
|
||||||
{
|
{
|
||||||
// Use the same native format as the underlying native control.
|
wxSize size;
|
||||||
#if wxUSE_INTL
|
|
||||||
wxString s = wxDateTime::Now().Format(wxLocale::GetOSInfo(MSWGetFormat()));
|
|
||||||
#else // !wxUSE_INTL
|
|
||||||
wxString s("XXX-YYY-ZZZZ");
|
|
||||||
#endif // wxUSE_INTL/!wxUSE_INTL
|
|
||||||
|
|
||||||
// the best size for the control is bigger than just the string
|
|
||||||
// representation of the current value because the control must accommodate
|
|
||||||
// any date and while the widths of all digits are usually about the same,
|
|
||||||
// the width of the month string varies a lot, so try to account for it
|
|
||||||
s += wxS("W");
|
|
||||||
|
|
||||||
wxSize size = GetTextExtent(s);
|
|
||||||
|
|
||||||
// We can ask the control itself to compute its ideal size, but we only use
|
// We can ask the control itself to compute its ideal size, but we only use
|
||||||
// it for the horizontal component: the vertical size is not computed
|
// it for the horizontal component: the vertical size is not computed
|
||||||
@@ -192,9 +179,25 @@ wxSize wxDateTimePickerCtrl::DoGetBestSize() const
|
|||||||
&& ::SendMessage(m_hWnd, DTM_GETIDEALSIZE, 0, (LPARAM)&idealSize) )
|
&& ::SendMessage(m_hWnd, DTM_GETIDEALSIZE, 0, (LPARAM)&idealSize) )
|
||||||
{
|
{
|
||||||
size.x = idealSize.cx;
|
size.x = idealSize.cx;
|
||||||
|
size.y = GetCharHeight();
|
||||||
}
|
}
|
||||||
else // Adjust the size ourselves.
|
else // Compute the size ourselves.
|
||||||
{
|
{
|
||||||
|
// Use the same native format as the underlying native control.
|
||||||
|
#if wxUSE_INTL
|
||||||
|
wxString s = wxDateTime::Now().Format(wxLocale::GetOSInfo(MSWGetFormat()));
|
||||||
|
#else // !wxUSE_INTL
|
||||||
|
wxString s("XXX-YYY-ZZZZ");
|
||||||
|
#endif // wxUSE_INTL/!wxUSE_INTL
|
||||||
|
|
||||||
|
// the best size for the control is bigger than just the string
|
||||||
|
// representation of the current value because the control must accommodate
|
||||||
|
// any date and while the widths of all digits are usually about the same,
|
||||||
|
// the width of the month string varies a lot, so try to account for it
|
||||||
|
s += wxS("W");
|
||||||
|
|
||||||
|
size = GetTextExtent(s);
|
||||||
|
|
||||||
// Account for the drop-down arrow or spin arrows.
|
// Account for the drop-down arrow or spin arrows.
|
||||||
size.x += wxSystemSettings::GetMetric(wxSYS_HSCROLL_ARROW_X, m_parent);
|
size.x += wxSystemSettings::GetMetric(wxSYS_HSCROLL_ARROW_X, m_parent);
|
||||||
|
|
||||||
|
Reference in New Issue
Block a user