]> git.saurik.com Git - wxWidgets.git/blobdiff - src/common/gdicmn.cpp
Applied [ 821234 ] Fix: erroneous assertion failed wxListBox::SetSelection
[wxWidgets.git] / src / common / gdicmn.cpp
index bed3f972ebd97c275fe0bf4f33cd76b6c4c40d61..47ffe0393b81e4eaa77fca10418bd946181c3763 100644 (file)
@@ -332,7 +332,6 @@ void wxColourDatabase::Initialize()
         {wxT("WHITE"), 255, 255, 255},
         {wxT("YELLOW"), 255, 255, 0},
         {wxT("YELLOW GREEN"), 153, 204, 50},
-        {wxT("YELLOW GREEN"), 153, 204, 50}
     };
 
     size_t n;
@@ -408,11 +407,9 @@ wxColour wxColourDatabase::Find(const wxString& colour) const
     if ( it != m_map->end() )
         return *(it->second);
 
-    // if we didn't find it,query the system, maybe it knows about it
-    //
-    // TODO: move this into platform-specific files
-#ifdef __WXGTK__
-    wxColour col( colour );
+    // if we didn't find it, query the system, maybe it knows about it
+#if defined(__WXGTK__) || defined(__X__)
+    wxColour col = wxColour::CreateByName(colour);
 
     if ( col.Ok() )
     {
@@ -422,6 +419,7 @@ wxColour wxColourDatabase::Find(const wxString& colour) const
 
     return col;
 #elif defined(__X__)
+    // TODO: move this to wxColour::CreateByName()
     XColor xcolour;
 
 #ifdef __WXMOTIF__
@@ -475,18 +473,21 @@ wxString wxColourDatabase::FindName(const wxColour& colour) const
 
 wxColour *wxColourDatabase::FindColour(const wxString& name)
 {
-    wxColour col = Find(name);
-    if ( !col.Ok() )
-        return NULL;
-
-    return new wxColour(col);
-}
+    // using a static variable here is not the most elegant solution but unless
+    // we want to make wxStringToColourHashMap public (i.e. move it to the
+    // header) so that we could have a member function returning
+    // wxStringToColourHashMap::iterator, there is really no good way to do it
+    // otherwise
+    //
+    // and knowing that this function is going to disappear in the next release
+    // anyhow I don't want to waste time on this
+    static wxColour s_col;
 
-void wxColourDatabase::AddColour(const wxString& name, wxColour *colour)
-{
-    wxCHECK_RET( colour, _T("NULL pointer in wxColourDatabase::AddColour") );
+    s_col = Find(name);
+    if ( !s_col.Ok() )
+        return NULL;
 
-    AddColour(name, wxColour(*colour));
+    return &s_col;
 }
 
 // ============================================================================