As a general rule they're discouraged, but for very small patches I
don't see a problem.

I'll attach the patch in this e-mail then. The patch size is about 6.1k.

If you would like me to host anything for you, just let me know -- you can
have a shell account on my home server if you like.

Thank you Thomas. I'll drop you a private message at #fvwm when I see you.
Index: fvwm/borders.c
===================================================================
RCS file: /home/cvs/fvwm/fvwm/fvwm/borders.c,v
retrieving revision 1.251
diff -u -r1.251 borders.c
--- fvwm/borders.c	27 Jan 2007 11:33:15 -0000	1.251
+++ fvwm/borders.c	6 May 2007 18:01:47 -0000
@@ -1029,7 +1029,8 @@
 
 	/* get mark's length and thickness */
 	inset = (br->relief.w_shin != 0 || br->relief.w_din != 0);
-	br->marks.length = fw->boundary_width - br->relief.w_dout - inset;
+	br->marks.length = fw->boundary_width - br->relief.w_dout - inset
+		+ ((HAS_MWM_BORDER(fw)) ? 1 : 0);
 	if (br->marks.length <= 0)
 	{
 		br->marks.has_x_marks = 0;
@@ -1107,8 +1108,8 @@
 }
 
 static void border_draw_x_mark(
-	border_relief_descr *br, int x, int y, Pixmap dest_pix,
-	Bool do_draw_shadow)
+	border_relief_descr *br, int x, int y, int relief_offset,
+	Pixmap dest_pix, Bool do_draw_shadow)
 {
 	int k;
 	int length;
@@ -1143,7 +1144,7 @@
 			x1 = x;
 			y1 = y + k;
 		}
-		x2 = x1 + length;
+		x2 = x1 + length + relief_offset;
 		y2 = y1;
 		XDrawLine(dpy, dest_pix, gc, x1, y1, x2, y2);
 	}
@@ -1152,8 +1153,8 @@
 }
 
 static void border_draw_y_mark(
-	border_relief_descr *br, int x, int y, Pixmap dest_pix,
-	Bool do_draw_shadow)
+	border_relief_descr *br, int x, int y, int relief_offset,
+	Pixmap dest_pix, Bool do_draw_shadow)
 {
 	int k;
 	int length;
@@ -1165,6 +1166,7 @@
 	}
 	y += br->marks.offset_tl;
 	gc = (do_draw_shadow) ? br->gcs.shadow : br->gcs.relief;
+
 	/* draw it */
 	for (k = 0, length = br->marks.length; k < br->marks.thickness;
 	     k++, length--)
@@ -1189,7 +1191,8 @@
 			y1 = y;
 		}
 		x2 = x1;
-		y2 = y1 + length - 1;
+		y2 = y1 + length - 1 + relief_offset;
+
 		XDrawLine(dpy, dest_pix, gc, x1, y1, x2, y2);
 	}
 
@@ -1197,8 +1200,8 @@
 }
 
 static void border_draw_part_marks(
-	border_relief_descr *br, rectangle *part_g, window_parts part,
-	Pixmap dest_pix)
+	FvwmWindow *fw, border_relief_descr *br, rectangle *part_g,
+	window_parts part, Pixmap dest_pix)
 {
 	int l;
 	int t;
@@ -1214,36 +1217,100 @@
 	switch (part)
 	{
 	case PART_BORDER_N:
-		border_draw_y_mark(br, 0, 0, dest_pix, False);
-		border_draw_y_mark(br, w, 0, dest_pix, True);
+		if (HAS_MWM_BUTTONS(fw))
+		{
+			border_draw_y_mark(br, 0, 1,  0, dest_pix, False);
+			border_draw_y_mark(br, w, 1, -1, dest_pix, True);
+		}
+		else
+		{
+			border_draw_y_mark(br, 0, 0, 0, dest_pix, False);
+			border_draw_y_mark(br, w, 0, 0, dest_pix, True);
+		}
 		break;
 	case PART_BORDER_S:
-		border_draw_y_mark(br, 0, h + o, dest_pix, False);
-		border_draw_y_mark(br, w, h + o, dest_pix, True);
+		if (HAS_MWM_BUTTONS(fw))
+		{
+			border_draw_y_mark(br, 0, h + o, -1, dest_pix, False);
+			border_draw_y_mark(br, w, h + o + 1, 0, dest_pix, True);
+		}
+		else
+		{
+			border_draw_y_mark(br, 0, h + o, 0, dest_pix, False);
+			border_draw_y_mark(br, w, h + o, 0, dest_pix, True);
+		}
 		break;
 	case PART_BORDER_E:
-		border_draw_x_mark(br, w + o, 0, dest_pix, False);
-		border_draw_x_mark(br, w + o, h, dest_pix, True);
+		if (HAS_MWM_BUTTONS(fw))
+		{
+			border_draw_x_mark(br, w + o, 0, -1, dest_pix, False);
+			border_draw_x_mark(br, w + o + 1, h, 0, dest_pix, True);
+		}
+		else
+		{
+			border_draw_x_mark(br, w + o, 0, 0, dest_pix, False);
+			border_draw_x_mark(br, w + o, h, 0, dest_pix, True);
+		}
 		break;
 	case PART_BORDER_W:
-		border_draw_x_mark(br, 0, 0, dest_pix, False);
-		border_draw_x_mark(br, 0, h, dest_pix, True);
+		if (HAS_MWM_BUTTONS(fw))
+		{
+			border_draw_x_mark(br, 1, 0, 0, dest_pix, False);
+			border_draw_x_mark(br, 1, h, 0, dest_pix, True);
+		}
+		else
+		{
+			border_draw_x_mark(br, 0, 0, 0, dest_pix, False);
+			border_draw_x_mark(br, 0, h, 0, dest_pix, True);
+		}
 		break;
 	case PART_BORDER_NW:
-		border_draw_x_mark(br, 0, t, dest_pix, True);
-		border_draw_y_mark(br, l, 0, dest_pix, True);
+		if (HAS_MWM_BUTTONS(fw))
+		{
+			border_draw_x_mark(br, 1, t, 0, dest_pix, True);
+			border_draw_y_mark(br, l, 1, -1, dest_pix, True);
+		}
+		else
+		{
+			border_draw_x_mark(br, 0, t, 0, dest_pix, True);
+			border_draw_y_mark(br, l, 0, 0, dest_pix, True);
+		}
 		break;
 	case PART_BORDER_NE:
-		border_draw_x_mark(br, l + o, t, dest_pix, True);
-		border_draw_y_mark(br, 0, 0, dest_pix, False);
+		if (HAS_MWM_BUTTONS(fw))
+		{
+			border_draw_x_mark(br, l + o + 1, t, 0, dest_pix, True);
+			border_draw_y_mark(br, 0, 0, 0, dest_pix, False);
+		}
+		else
+		{
+			border_draw_x_mark(br, l + o, t, 0, dest_pix, True);
+			border_draw_y_mark(br, 0, 0, 0, dest_pix, False);
+		}
 		break;
 	case PART_BORDER_SW:
-		border_draw_x_mark(br, 0, 0, dest_pix, False);
-		border_draw_y_mark(br, l, t + o, dest_pix, True);
+		if (HAS_MWM_BUTTONS(fw))
+		{
+			border_draw_x_mark(br, 1, 0, 0, dest_pix, False);
+			border_draw_y_mark(br, l, t + o + 1, 0, dest_pix, True);
+		}
+		else
+		{
+			border_draw_x_mark(br, 0, 0, 0, dest_pix, False);
+			border_draw_y_mark(br, l, t + o, 0, dest_pix, True);
+		}
 		break;
 	case PART_BORDER_SE:
-		border_draw_x_mark(br, l + o, 0, dest_pix, False);
-		border_draw_y_mark(br, 0, t + o, dest_pix, False);
+		if (HAS_MWM_BUTTONS(fw))
+		{
+			border_draw_x_mark(br, l + o, 0, -1, dest_pix, False);
+			border_draw_y_mark(br, 0, t + o, -1, dest_pix, False);
+		}
+		else
+		{
+			border_draw_x_mark(br, l + o, 0, 0, dest_pix, False);
+			border_draw_y_mark(br, 0, t + o, 0, dest_pix, False);
+		}
 		break;
 	default:
 		return;
@@ -1612,7 +1679,7 @@
 		/* draw the handle marks */
 		if (br->marks.has_x_marks || br->marks.has_y_marks)
 		{
-			border_draw_part_marks(br, &part_g, part, p);
+			border_draw_part_marks(fw, br, &part_g, part, p);
 		}
 	}
 	/* apply the pixmap and destroy it */
@@ -3370,7 +3437,7 @@
 			button_g->height - 1,
 			(do_reverse_relief) ? sgc : rgc,
 			(do_reverse_relief) ? rgc : sgc,
-			td->cd->relief_width, True);
+			td->cd->relief_width, (HAS_MWM_BUTTONS(fw)) ? False : True);
 		break;
 	default:
 		/* flat */
@@ -3587,7 +3654,7 @@
 				fw->title_thickness - 1),
 			(reverse) ? tdd->sgc : tdd->rgc,
 			(reverse) ? tdd->rgc : tdd->sgc, td->cd->relief_width,
-			True, rotation);
+			(HAS_MWM_BUTTONS(fw)) ? False : True, rotation);
 		break;
 	default:
 		/* flat */

Reply via email to