This patch corrects a couple of bugs in the gtkpixmap.c file which have
been introduced in the 971109 version.

  if (mask)
    {
      GdkColor tmp_color;

      *mask = gdk_pixmap_new (window, width, height, 1);
      gc = gdk_gc_new (*mask);

      tmp_color.pixel = 0;
                       ~~~
      gdk_gc_set_foreground (gc, &tmp_color);
      gdk_draw_rectangle (*mask, gc, TRUE, 0, 0, -1, -1);

      tmp_color.pixel = ~((gulong) 0);
                       ~~~~~~~~~~~~~~~
      gdk_gc_set_foreground (gc, &tmp_color);
    }


The author suppose that the black color is the first in the colormap
and that the white color is the last one.
This is be true for linux in true-color (depth 15-32).
If you're in pseudo-color (256 colors) the black color is the entry 0
(right), and white the entry 1 (oops). Maybe X can handle this for a
bitmap (1 plane).
But he real problem is that on a SUN (or HP, I don't remember), these
2 entries are swapped: 0 is white, and black is 1. So your mask is
inverted...
I don't like gdk_color_white/black() either, but unfortunatly we'll have
to stick to this solution until we find a better one :(.


I also added a default transparent color for the creat_from_xpm* 
functions. The user must provide a color for the transparent one
(what for? it's transparent) and the function does not test if this
parameter is valid (seg. fault if it's NULL). So, now if s.o doesn't 
provide a transparent color (NULL pointer), a default color is used
(white).


Patrice Fortier.
