Subject: bug#51988: [PATCH] Implement the buttonForeground resource color

From: Gregory Heytings <[email-masked]>
Date: Fri, 19 Nov 2021 23:07:53 +0000

The manual documents, in Lucid Resources, a "buttonForeground" resource 
color, which is read and allocated, but never actually used.  Patch 
attached, and a screenshot without and with the patch.  Without the patch, 
selected items are hard to differentiate from unselected ones, with the 
patch and without setting that resource color they become visibly 
different.

From 673e32e100e94d96d9a42a4a7b64d9b951aba957 Mon Sep 17 00:00:00 2001
From: Gregory Heytings <[email-masked]>
Date: Fri, 19 Nov 2021 22:58:10 +0000
Subject: [PATCH] Implement the buttonForeground resource

* lwlib/xlwmenu.c (draw_shadow_rectangle, draw_shadow_rhombus):
Use the buttonForeground resource color.
---
 lwlib/xlwmenu.c | 30 ++++++++++++++++++++++++++++++
 1 file changed, 30 insertions(+)

diff --git a/lwlib/xlwmenu.c b/lwlib/xlwmenu.c
index 702fad49ba..f8b20c308d 100644
--- a/lwlib/xlwmenu.c
+++ b/lwlib/xlwmenu.c
@@ -641,6 +641,21 @@ draw_shadow_rectangle (XlwMenuWidget mw,
   int thickness = !x && !y ? mw->menu.border_thickness : mw->menu.shadow_thickness;
   XPoint points [4];
 
+  if (!erase_p && width == height)
+    {
+      points [0].x = x;
+      points [0].y = y;
+      points [1].x = x + width;
+      points [1].y = y;
+      points [2].x = x + width;
+      points [2].y = y + height;
+      points [3].x = x;
+      points [3].y = y + height;
+      XFillPolygon (dpy, window,
+                    down_p ? mw->menu.button_gc : mw->menu.inactive_button_gc,
+                    points, 4, Convex, CoordModeOrigin);
+    }
+
   if (!erase_p && down_p)
     {
       GC temp;
@@ -704,6 +719,21 @@ draw_shadow_rhombus (XlwMenuWidget mw,
   int thickness = mw->menu.shadow_thickness;
   XPoint points [4];
 
+  if (!erase_p && width == height)
+    {
+      points [0].x = x;
+      points [0].y = y + width / 2;
+      points [1].x = x + height / 2;
+      points [1].y = y + width;
+      points [2].x = x + height;
+      points [2].y = y + width / 2;
+      points [3].x = x + height / 2;
+      points [3].y = y;
+      XFillPolygon (dpy, window,
+                    down_p ? mw->menu.button_gc : mw->menu.inactive_button_gc,
+                    points, 4, Convex, CoordModeOrigin);
+    }
+
   if (!erase_p && down_p)
     {
       GC temp;
-- 
2.33.0