Subject: in place of that lame colors.c.patch here comes newhilightcolor.patch. enjoy!

From: Jakub Jasinski <[email-masked]>
Date: Wed, 17 Jun 1998 21:44:12 -0400

This new patch adds a new .fvwm2rc command, NewHilightColor (ala
HilightColor).

syntax:

NewHilightColor  (foreground) (background) (topshadow) (bottomshadow)

again, to make fvwm2 look more like  mwm here's the eleet color combo:

AddToDecor Mwm
+       NewHilightColor white #59659e79a699 #b6dad75cd75c #28a24d345144

--- fvwm-2.0.46/fvwm/builtins.c.orig	Wed Jun 17 21:21:54 1998
+++ fvwm-2.0.46/fvwm/builtins.c	Wed Jun 17 21:24:08 1998
@@ -1,3 +1,9 @@
+/* patched by Jakub Jasinski ([email-masked])                            */
+/* now you can set the top and bottom shadow of a hilighted window with a    */
+/* command NewHilightColor                                                   */
+/* eleet mwm combo is:(fg)  (background)  (topshadow)   (bottomshadow)       */
+/* NewHilightColor    white #59659e79a699 #b6dad75cd75c #28a24d345144        */
+
 /****************************************************************************
  * This module is all original code 
  * by Rob Nation 
@@ -1423,6 +1429,85 @@
   }
   if (hifore) free(hifore); 
   if (hiback) free(hiback);
+  gcm = GCFunction|GCPlaneMask|GCGraphicsExposures|GCLineWidth|GCForeground|
+    GCBackground;
+  gcv.foreground = fl->HiRelief.fore;
+  gcv.background = fl->HiRelief.back;
+  gcv.fill_style = FillSolid;
+  gcv.plane_mask = AllPlanes;
+  gcv.function = GXcopy;
+  gcv.graphics_exposures = False;
+  gcv.line_width = 0;
+  if(fl->HiReliefGC != NULL)
+  {
+    XFreeGC(dpy,fl->HiReliefGC);
+  }
+  fl->HiReliefGC = XCreateGC(dpy, Scr.Root, gcm, &gcv);  
+
+  gcv.foreground = fl->HiRelief.back;
+  gcv.background = fl->HiRelief.fore;
+  if(fl->HiShadowGC != NULL)
+  {
+    XFreeGC(dpy,fl->HiShadowGC);
+  }
+  fl->HiShadowGC = XCreateGC(dpy, Scr.Root, gcm, &gcv);  
+
+  if((Scr.flags & WindowsCaptured)&&(Scr.Hilite != NULL))
+  {
+    hilight = Scr.Hilite;
+    SetBorder(Scr.Hilite,False,True,True,None);
+    SetBorder(hilight,True,True,True,None);
+  }
+}
+
+/* same as SetHiColor except that it also accepts top and bottom shadow */
+/* colors                                                               */
+
+void NewSetHiColor(XEvent *eventp,Window w,FvwmWindow *tmp_win,
+		unsigned long context, char *action,int* Module)
+{
+  XGCValues gcv;
+  unsigned long gcm;
+  char *hifore=NULL, *hiback=NULL, *hitopshadow=NULL, *hibottomshadow=NULL;
+  extern char *white,*black;
+  FvwmWindow *hilight;
+#ifdef USEDECOR
+  FvwmDecor *fl = cur_decor ? cur_decor : &Scr.DefaultDecor;
+#else
+  FvwmDecor *fl = &Scr.DefaultDecor;
+#endif
+  
+  action = GetNextToken(action,&hifore);
+  action = GetNextToken(action,&hiback);
+  action = GetNextToken(action,&hitopshadow);
+  GetNextToken(action,&hibottomshadow);
+  if(Scr.d_depth > 2)
+  {
+    if(hifore != NULL)
+    {
+	fl->HiColors.fore = GetColor(hifore);
+    }
+    if(hiback != NULL)
+    {
+	fl->HiColors.back = GetColor(hiback);
+    }
+    if(hibottomshadow != NULL)
+    	fl->HiRelief.back = GetColor(hibottomshadow);
+    if(hitopshadow != NULL)
+    	fl->HiRelief.fore  = GetColor(hitopshadow);
+
+  }
+  else
+  {
+    fl->HiColors.back  = GetColor(white);
+    fl->HiColors.fore  = GetColor(black); 
+    fl->HiRelief.back  = GetColor(black);
+    fl->HiRelief.fore  = GetColor(white);
+  }
+  if (hifore) free(hifore); 
+  if (hiback) free(hiback);
+  if (hitopshadow) free(hitopshadow); 
+  if (hibottomshadow) free(hibottomshadow);
   gcm = GCFunction|GCPlaneMask|GCGraphicsExposures|GCLineWidth|GCForeground|
     GCBackground;
   gcv.foreground = fl->HiRelief.fore;
--- fvwm-2.0.46/fvwm/functions.c.orig	Wed Jun 17 21:19:57 1998
+++ fvwm-2.0.46/fvwm/functions.c	Wed Jun 17 21:13:29 1998
@@ -101,6 +101,7 @@
   {"ModulePath",   setModulePath,    F_MODULE_PATH,         FUNC_NO_WINDOW},
   {"Mouse",        ParseMouseEntry,  F_MOUSE,               FUNC_NO_WINDOW},
   {"Move",         move_window,      F_MOVE,                FUNC_NEEDS_WINDOW},
+  {"NewHilightColor", NewSetHiColor, F_NHICOLOR,            FUNC_NO_WINDOW},
   {"Next",         NextFunc,         F_NEXT,                FUNC_NO_WINDOW},
   {"None",         NoneFunc,         F_NONE,                FUNC_NO_WINDOW},
   {"Nop",          Nop_func,         F_NOP,                 FUNC_NOP},
--- fvwm-2.0.46/fvwm/misc.h.orig	Wed Jun 17 21:20:10 1998
+++ fvwm-2.0.46/fvwm/misc.h	Wed Jun 17 21:10:12 1998
@@ -490,6 +490,8 @@
 	  char *action, int *Module);
 void SetHiColor(XEvent *eventp,Window w,FvwmWindow *tmp_win,
 		unsigned long context, char *action,int* Module);
+void NewSetHiColor(XEvent *eventp,Window w,FvwmWindow *tmp_win,
+		unsigned long context, char *action,int* Module);
 void SetMenuColor(XEvent *eventp,Window w,FvwmWindow *tmp_win,
 		unsigned long context, char *action,int* Module);
 void LoadIconFont(XEvent *eventp,Window w,FvwmWindow *tmp_win,
--- fvwm-2.0.46/fvwm/parse.h.orig	Wed Jun 17 21:22:20 1998
+++ fvwm-2.0.46/fvwm/parse.h	Wed Jun 17 21:12:10 1998
@@ -104,6 +104,7 @@
 #define F_DESTROY_DECOR         124
 #define F_UPDATE_DECOR          125
 #define F_WINDOW_SHADE          126
+#define F_NHICOLOR		500
 
 /* Functions for use by modules only! */
 #define F_SEND_WINDOW_LIST     1000