X-Git-Url: https://git.artsoft.org/?p=rocksndiamonds.git;a=blobdiff_plain;f=src%2Fbuttons.c;h=cffd190bc0f5c4c93fd7511fc9e015647b915b9b;hp=c9e00fca1a04cb35a684b5d9bb6f1a63dbb3ef7f;hb=c5728b1ebc2a1d3753a6eea5a0f6335d077eef6b;hpb=76e9111869247eae9edd4e65ee4e8ab615110744 diff --git a/src/buttons.c b/src/buttons.c index c9e00fca..cffd190b 100644 --- a/src/buttons.c +++ b/src/buttons.c @@ -1659,21 +1659,31 @@ static void DrawGadget(struct GadgetInfo *gi, boolean pressed, boolean direct) &gi->alt_design[state] : &gi->design[state]); - XCopyArea(display, gd->pixmap, (direct ? window : drawto), gc, + XCopyArea(display, gd->pixmap, drawto, gc, gd->x, gd->y, gi->width, gi->height, gi->x, gi->y); + + if (direct) + XCopyArea(display, gd->pixmap, window, gc, + gd->x, gd->y, gi->width, gi->height, gi->x, gi->y); + else + redraw_mask |= REDRAW_ALL; } void MapGadget(struct GadgetInfo *gi) { + if (gi == NULL) + return; + gi->mapped = TRUE; DrawGadget(gi, (gi->state == GD_BUTTON_PRESSED), FALSE); - - redraw_mask |= REDRAW_ALL; } void UnmapGadget(struct GadgetInfo *gi) { + if (gi == NULL) + return; + gi->mapped = FALSE; }