Applied colour patch for better 8-bit support,

Improved handling of inserting controls into
    a toolbar that don't have any def width. This
    works for all controls but wxComboBox.


git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@8930 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
This commit is contained in:
Robert Roebling
2000-12-16 12:27:26 +00:00
parent 0a07a7d852
commit 47c93b637e
8 changed files with 108 additions and 108 deletions

View File

@@ -24,12 +24,13 @@
class wxColourRefData: public wxObjectRefData
{
public:
public:
wxColourRefData();
~wxColourRefData();
void FreeColour();
public:
GdkColor m_color;
GdkColormap *m_colormap;
bool m_hasPixel;
@@ -54,7 +55,22 @@ wxColourRefData::~wxColourRefData()
void wxColourRefData::FreeColour()
{
// if (m_hasPixel) gdk_colors_free( m_colormap, &m_color, 1, 0 );
if (m_colormap)
{
#ifdef __WXGTK20__
if ((m_colormap->visual->type == GDK_VISUAL_GRAYSCALE) ||
(m_colormap->visual->type == GDK_VISUAL_PSEUDO_COLOR))
#else
GdkColormapPrivate *private_colormap = (GdkColormapPrivate*) m_colormap;
if ((private_colormap->visual->type == GDK_VISUAL_GRAYSCALE) ||
(private_colormap->visual->type == GDK_VISUAL_PSEUDO_COLOR))
#endif
{
// What happens if the colour has not been allocated
// anew but has been found? RR.
gdk_colormap_free_colors( m_colormap, &m_color, 1 );
}
}
}
//-----------------------------------------------------------------------------
@@ -190,21 +206,7 @@ void wxColour::CalcPixel( GdkColormap *cmap )
(private_colormap->visual->type == GDK_VISUAL_PSEUDO_COLOR))
#endif
{
GdkColor *colors = cmap->colors;
int max = 3 * (65536);
int index = -1;
for (int i = 0; i < cmap->size; i++)
{
int rdiff = (M_COLDATA->m_color.red - colors[i].red);
int gdiff = (M_COLDATA->m_color.green - colors[i].green);
int bdiff = (M_COLDATA->m_color.blue - colors[i].blue);
int sum = ABS (rdiff) + ABS (gdiff) + ABS (bdiff);
if (sum < max) { index = i; max = sum; }
}
M_COLDATA->m_hasPixel = TRUE;
M_COLDATA->m_color.pixel = index;
M_COLDATA->m_hasPixel = gdk_colormap_alloc_color( cmap, &M_COLDATA->m_color, FALSE, TRUE );
}
else
{