summaryrefslogtreecommitdiff
path: root/x11-toolkits/xview/files/patch-lib+libxview+icon+icon.c
blob: 4cdfabaaf1462b6ab07428ddd131b694d9f2c25d (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
--- lib/libxview/icon/icon.c.orig	Mon Sep 29 00:02:30 2003
+++ lib/libxview/icon/icon.c	Mon Sep 29 00:02:30 2003
@@ -343,15 +343,32 @@
     val.ts_x_origin = 0;
     val.ts_y_origin = 0;	
     val_mask = GCForeground | GCBackground | GCFunction | 
-               GCPlaneMask | GCFillStyle | GCTileStipXOrigin | 
+               GCPlaneMask | GCTileStipXOrigin | 
                GCTileStipYOrigin;
     XChangeGC(display, gc, val_mask, &val );
 
     if (PR_NOT_MPR(((Pixrect *) icon->ic_mpr)))  {
 	DRAWABLE_INFO_MACRO( (Xv_opaque) icon->ic_mpr, src_info );
+
+	/* stipple only if we have a bitmap icon */
+	if (xv_depth(src_info) == 1) {
+		val.stipple = xv_xid(src_info);
+		val.fill_style = FillOpaqueStippled;
+		val_mask = GCFillStyle | GCStipple;
+	} else if (xv_depth(info) == xv_depth(src_info)) {
+		val.tile = xv_xid(src_info);
+		val.fill_style = FillTiled;
+		val_mask = GCFillStyle | GCTile;
+	} else {
+		xv_error(NULL,
+			ERROR_STRING,
+		 	XV_MSG("icon: can't handle drawables of different depth"),
+		 	0);
+		return (XV_ERROR);
+	}	
+
 	val.clip_mask = xv_xid(mask_info);
-	val.stipple = xv_xid(src_info);
-	val_mask = GCStipple | GCClipMask;
+	val_mask |= GCClipMask;
 	XChangeGC(display, gc, val_mask, &val );
 
 	if ( xv_rop_internal( display, xid, gc, icon->ic_gfxrect.r_left + x,