Handle positional parameter specifications in wxFormatConverter to ensure that
e.g. "%N$s" are correctly transformed to "%N$S" if needed. This fixes the use
of positional parameters under OS X.
Closes #10965.
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@70523
c3d73ce0-8a6f-49c7-b76d-
6d57e0e08775
OSX:
- Provide native implementations of wxDatePickerCtrl and wxTimePickerCtrl.
OSX:
- Provide native implementations of wxDatePickerCtrl and wxTimePickerCtrl.
+- Fix handling of positional parameters in wxPrintf() &c (David Connet).
{
if ( CopyFmtChar(*format++) == wxT('%') )
{
{
if ( CopyFmtChar(*format++) == wxT('%') )
{
+#if wxUSE_PRINTF_POS_PARAMS
+ if ( *format >= '0' && *format <= '9' )
+ {
+ SkipDigits(&format);
+ if ( *format == '$' )
+ {
+ // It was a positional argument specification.
+ CopyFmtChar(*format++);
+ }
+ //else: it was a width specification, nothing else to do.
+ }
+#endif // wxUSE_PRINTF_POS_PARAMS
+
// skip any flags
while ( IsFlagChar(*format) )
CopyFmtChar(*format++);
// skip any flags
while ( IsFlagChar(*format) )
CopyFmtChar(*format++);
wxString s(wxT('Z'), len);
CPPUNIT_ASSERT_EQUAL( len, wxString::Format(wxT("%s"), s.c_str()).length());
}
wxString s(wxT('Z'), len);
CPPUNIT_ASSERT_EQUAL( len, wxString::Format(wxT("%s"), s.c_str()).length());
}
+
+
+ CPPUNIT_ASSERT_EQUAL
+ (
+ "two one",
+ wxString::Format(wxT("%2$s %1$s"), wxT("one"), wxT("two"))
+ );
}
void StringTestCase::Constructors()
}
void StringTestCase::Constructors()