fix wxColourData::FromString() not restoring 16th color, bug 1844355
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@53570 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
This commit is contained in:
parent
bf9b73bb83
commit
166fbaa46a
@ -38,6 +38,7 @@
|
|||||||
#include "wx/gdicmn.h"
|
#include "wx/gdicmn.h"
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
#include "wx/tokenzr.h"
|
||||||
#include "wx/prntbase.h"
|
#include "wx/prntbase.h"
|
||||||
#include "wx/printdlg.h"
|
#include "wx/printdlg.h"
|
||||||
|
|
||||||
@ -135,43 +136,19 @@ wxString wxColourData::ToString() const
|
|||||||
|
|
||||||
bool wxColourData::FromString(const wxString& str)
|
bool wxColourData::FromString(const wxString& str)
|
||||||
{
|
{
|
||||||
wxString token;
|
wxStringTokenizer tokenizer(str, wxCOL_DATA_SEP);
|
||||||
int n = -1; // index of the field, -1 corresponds to m_chooseFull
|
wxString token = tokenizer.GetNextToken();
|
||||||
for ( wxString::const_iterator i = str.begin(); i != str.end(); ++i )
|
m_chooseFull = token == '1';
|
||||||
|
bool success = m_chooseFull || token == '0';
|
||||||
|
for (int i = 0; success && i < NUM_CUSTOM; i++)
|
||||||
{
|
{
|
||||||
if ( *i == wxCOL_DATA_SEP )
|
token = tokenizer.GetNextToken();
|
||||||
{
|
if (token.empty())
|
||||||
if ( n == -1 )
|
m_custColours[i] = wxNullColour;
|
||||||
{
|
else
|
||||||
if ( token == '0' )
|
success = m_custColours[i].Set(token);
|
||||||
m_chooseFull = false;
|
|
||||||
else if ( token == '1' )
|
|
||||||
m_chooseFull = true;
|
|
||||||
else // only '0' and '1' are used in ToString()
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
else // custom colour
|
|
||||||
{
|
|
||||||
if ( n == WXSIZEOF(m_custColours) )
|
|
||||||
return false; // too many custom colours
|
|
||||||
|
|
||||||
// empty strings are used by ToString() for colours not used
|
|
||||||
if ( token.empty() )
|
|
||||||
m_custColours[n] = wxNullColour;
|
|
||||||
else if ( !m_custColours[n].Set(token) )
|
|
||||||
return false; // invalid colour string
|
|
||||||
}
|
|
||||||
|
|
||||||
token.clear();
|
|
||||||
n++;
|
|
||||||
}
|
|
||||||
else // continuation of the current field
|
|
||||||
{
|
|
||||||
token += *i;
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
return success;
|
||||||
return true;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
// ----------------------------------------------------------------------------
|
// ----------------------------------------------------------------------------
|
||||||
|
Loading…
Reference in New Issue
Block a user