[comp.windows.x] Masking an icon

palmer@MWSUN.MITRE.ORG (05/13/89)

Hello,

  I've been trying, unsuccessfully, to create a window that has a round
icon of a globe (from Poskbitmaptars.) I'm using the following
code (error checking ommitted) : 

Display *display ;
Window win, rwin;
int screen, status, x=0, y=0 ;
unsigned width, height ;
Pixmap	globe_pixmap, globe_mask_pixmap ;
char *globe = "/usr/users/palmer/bitmaps/globes/globe" ;
char *globe_mask = "/usr/users/palmer/bitmaps/globes/globeMask" ;
XWMHints wm_hints, *ret_hints ;

screen = DefaultScreen(display);
rwin = RootWindow(display, screen) ;

status =
 XReadBitmapFile(display, rwin, globe, &width, &height,
    &globe_pixmap, &hotx, &hoty)  ;

status =
 XReadBitmapFile(display, rwin, globe_mask, &width, &height,
    &globe_mask_pixmap, &hotx, &hoty) ;

win = XCreateSimpleWindow(display, rwin, x, y, width, height,
       border_width, BlackPixel(display, screen),
       WhitePixel(display, screen)) ;

wm_hints.flags =  IconPixmapHint | IconMaskHint ;
wm_hints.icon_pixmap = globe_pixmap ;
wm_hints.icon_mask = globe_mask_pixmap ;

XSetWMHints(display, win, &wm_hints);
XMapWindow(display, win);
               .
               .
               .
     (event handling ommitted)

  where "globe" is a bitmap of the globe and "globe_mask" is a bitmap of a
solid ball slightly larger than "globe". I get an icon with the globe,
but it is not masked (ie. it is square instead of round.) If I try :

          xsetroot -cursor globe globeMask

  I get a globe cursor that is correctly masked. Furthermore, when I add
the following to my code :

         ret_hints = XGetWMHints(display, win) ;
         XSetWindowBackgroundPixmap(display, win, ret_hints->icon_mask) ;

  I get the solid ball in my window; so I know the pixmaps are correct.

If anyone has been able to mask an icon, would you please tell me what
I'm doing wrong?

                                  Forrest Palmer
                                  palmer@mwsun.mitre.org
                                  palmer@mitre.org

rws@EXPO.LCS.MIT.EDU (05/16/89)

    If anyone has been able to mask an icon, would you please tell me what
    I'm doing wrong?

Probably you're using a window manager that ignores icon_mask.