--- ./style.c.orig	2006-07-17 16:12:11.000000000 +0100
+++ ./style.c	2006-07-19 18:11:00.000000000 +0100
@@ -2758,6 +2758,12 @@
 			S_SET_DO_IGNORE_RESTACK(SCM(*ps), 1);
 			S_SET_DO_IGNORE_RESTACK(SCC(*ps), 1);
 		}
+		else if (StrEquals(token, "IconStickyStipples"))
+		{
+			S_SET_HAS_ICON_STICKY_STIPPLES(SCF(*ps), on);
+			S_SET_HAS_ICON_STICKY_STIPPLES(SCM(*ps), 1);
+			S_SET_HAS_ICON_STICKY_STIPPLES(SCC(*ps), 1);
+		}
 		else if (StrEquals(token, "IconTitle"))
 		{
 			S_SET_HAS_NO_ICON_TITLE(SCF(*ps), !on);
@@ -3537,6 +3543,17 @@
 			S_SET_IS_STICKY_ACROSS_DESKS(SCM(*ps), 1);
 			S_SET_IS_STICKY_ACROSS_DESKS(SCC(*ps), 1);
 		}
+		else if (StrEquals(token, "StickyWindowStipples"))
+		{
+			S_SET_HAS_STICKY_WINDOW_STIPPLES(SCF(*ps), on);
+			S_SET_HAS_STICKY_WINDOW_STIPPLES(SCM(*ps), 1);
+			S_SET_HAS_STICKY_WINDOW_STIPPLES(SCC(*ps), 1);
+
+			S_SET_HAS_STIPPLED_TITLE(SCF(*ps),!on);
+			S_SET_HAS_STIPPLED_TITLE(SCM(*ps),1);
+			S_SET_HAS_STIPPLED_TITLE(SCC(*ps),1);
+		}
+			 
 		else if (StrEquals(token, "Slippery"))
 		{
 			S_SET_IS_STICKY_ACROSS_PAGES(SCF(*ps), !on);
--- ./style.h.orig	2006-07-17 16:12:19.000000000 +0100
+++ ./style.h	2006-07-19 13:33:53.000000000 +0100
@@ -227,6 +227,8 @@
 	((c).s.has_mwm_override)
 #define S_SET_HAS_MWM_OVERRIDE(c,x) \
 	((c).s.has_mwm_override = !!(x))
+#define S_SET_HAS_ICON_STICKY_STIPPLES(c,x) \
+	((c).s.has_icon_sticky_stipples = !!(x))
 #define S_HAS_NO_ICON_TITLE(c) \
 	((c).s.has_no_icon_title)
 #define S_SET_HAS_NO_ICON_TITLE(c,x) \
@@ -239,6 +241,8 @@
 	((c).s.has_stippled_title)
 #define S_SET_HAS_STIPPLED_TITLE(c,x) \
 	((c).s.has_stippled_title = !!(x))
+#define S_SET_HAS_STICKY_WINDOW_STIPPLES(c,x) \
+	((c).s.has_sticky_window_stipples = !!(x))
 #define S_HAS_WINDOW_FONT(c) \
 	((c).has_window_font)
 #define S_SET_HAS_WINDOW_FONT(c,x) \
--- ./window_flags.h.orig	2006-07-17 16:12:32.000000000 +0100
+++ window_flags.h	2006-07-19 18:03:42.000000000 +0100
@@ -81,6 +81,12 @@
 	(fw)->flags.common.s.has_stippled_title = !!(x)
 #define SETM_HAS_STIPPLED_TITLE(fw,x) \
 	(fw)->flag_mask.common.s.has_stippled_title = !!(x)
+#define HAS_STICKY_WINDOW_STIPPLES(fw) \
+	((fw)->flags.common.s.has_sticky_window_stipples)
+#define SET_HAS_STICKY_WINDOW_STIPPLES(fw) \
+	(fw)->flags.common.s.has_sticky_window_stipples = !!(x)
+#define SETM_HAS_STICKY_WINDOW_STIPPLES(fw,x) \
+	(fw)->flag_mask.common.s.has_sticky_window_stipples = !!(x)
 #define ICON_OVERRIDE_MODE(fw) \
 	((fw)->flags.common.s.icon_override)
 #define SET_ICON_OVERRIDE_MODE(fw,x) \
@@ -99,6 +105,12 @@
 	(fw)->flags.common.s.is_icon_sticky_across_desks = !!(x)
 #define SETM_ICON_STICKY_ACROSS_DESKS(fw,x) \
 	(fw)->flag_mask.common.s.is_icon_sticky_across_desks = !!(x)
+#define HAS_ICON_STICKY_STIPPLES(fw) \
+	((fw)->flags.common.s.has_icon_sticky_stipples)
+#define SET_HAS_ICON_STICKY_STIPPLES(fw) \
+	(fw)->flags.common.s.has_icon_sticky_stipples = !!(x)
+#define SETM_HAS_ICON_STICKY_STIPPLES(fw,x) \
+	(fw)->flag_mask.common.s.has_icon_sticky_stipples = !!(x)
 #define USE_ICON_POSITION_HINT(fw) \
 	((fw)->flags.common.s.use_icon_position_hint)
 #define SET_USE_ICON_POSITION_HINT(fw,x) \
@@ -728,5 +740,4 @@
 	(fw)->flag_mask.has_ewmh_init_wm_desktop = (x)
 #define HAS_EWMH_INIT_WM_DESKTOP(fw) \
 	((fw)->flags.has_ewmh_init_wm_desktop)
-
 #endif /* _WINDOW_FLAGS_ */
--- ./fvwm.h.orig	2006-07-17 16:12:40.000000000 +0100
+++ ./fvwm.h	2006-07-19 13:37:14.000000000 +0100
@@ -200,6 +200,8 @@
 	/* common flags (former flags in bits 0-12) */
 	unsigned is_sticky_across_pages : 1;
 	unsigned is_sticky_across_desks : 1;
+	unsigned has_sticky_window_stipples : 1;
+	unsigned has_icon_sticky_stipples : 1;
 	unsigned has_icon_font : 1;
 	unsigned has_no_border : 1;
 	unsigned has_window_font : 1;
@@ -239,6 +241,8 @@
 		unsigned has_no_icon_title : 1;
 		unsigned has_override_size : 1;
 		unsigned has_stippled_title : 1;
+		unsigned has_sticky_window_stipples : 1;
+		unsigned has_icon_sticky_stipples : 1;
 		unsigned icon_override : 2;
 #define NO_ACTIVE_ICON_OVERRIDE 0
 #define ICON_OVERRIDE           1
--- ./borders.c.orig	2006-07-02 22:15:42.000000000 +0100
+++ ./borders.c	2006-07-18 22:26:34.000000000 +0100
@@ -3422,8 +3422,7 @@
 	int left_length = 0;
 	rotation_t rotation;
 
-	if (!IS_STICKY_ACROSS_PAGES(fw) && !IS_STICKY_ACROSS_DESKS(fw) &&
-	    !HAS_STIPPLED_TITLE(fw))
+	if (!IS_STICKY_ACROSS_PAGES(fw) && !IS_STICKY_ACROSS_DESKS(fw))
 	{
 		return;
 	}
@@ -3454,6 +3453,16 @@
 		right_length = td->right_main_g.width -
 			td->right_of_text_length - td->right_end_length;
 	}
+
+	/* Thomas Adam -- if the window is sticky either across pages or
+	 * desks and it has a stippled title, but nothing for
+	 * stick_window_stipples, then don't bother drawing them -- just
+	 * return immediately.
+	 */
+	if ( (IS_STICKY_ACROSS_PAGES(fw) || IS_STICKY_ACROSS_DESKS(fw)) &&
+	    (!HAS_STICKY_WINDOW_STIPPLES(fw) && HAS_STIPPLED_TITLE(fw)) )
+	      return;
+      
 	num = (int)(fw->title_thickness / WINDOW_TITLE_STICK_VERT_DIST / 2) *
 		2 - 1;
 	min = fw->title_thickness / 2 - num * 2 + 1;
--- ./icons.c.orig	2006-07-19 01:38:12.000000000 +0100
+++ ./icons.c	2006-07-19 18:11:41.000000000 +0100
@@ -854,8 +854,13 @@
 		use_unexpanded_size = 0;
 		w_title_text_gap = ICON_TITLE_TEXT_GAP_EXPANDED;
 		x_title_min = w_title_text_gap + relief;
+		
 		if (is_sticky)
 		{
+			if (HAS_STICKY_WINDOW_STIPPLES(fw))
+			{
+				return;
+			}
 			w_stipple = ICON_TITLE_STICK_MIN_WIDTH;
 			x_title_min +=
 				w_stipple + ICON_TITLE_TO_STICK_EXTRA_GAP;
@@ -957,6 +962,13 @@
 	r.height = ICON_HEIGHT(fw) - 2*relief;
 	if (is_sticky)
 	{
+		/*
+		if (HAS_STICKY_WINDOW_STIPPLES(fw))
+		{
+			return;
+		}
+		*/
+
 		if (w_stipple == 0)
 		{
 			w_stipple = ((w_title_w - 2 *
@@ -1030,7 +1042,7 @@
 				ICON_HEIGHT(fw) - 2*relief, False);
 		}
 		if (is_sticky)
-		{
+		{ 
 			/* clear the sticky area after the text */
 			XClearArea(
 				dpy, FW_W_ICON_TITLE(fw),
@@ -1081,7 +1093,7 @@
 		ICON_HEIGHT(fw) - 1,
 		(fw->icon_title_relief > 0)? Relief:Shadow,
 		(fw->icon_title_relief > 0)? Shadow:Relief, relief);
-	if (is_sticky)
+	if (is_sticky && HAS_ICON_STICKY_STIPPLES(fw))
 	{
 		/* an odd number of lines every 4 pixels */
 		int pseudo_height = ICON_HEIGHT(fw)- 2*relief + 2;
