diff -rc --new-file oclock-1.0.6/Clock.c oclock-1.0.6.4/Clock.c
*** oclock-1.0.6/Clock.c	2024-12-04 15:58:37.000000000 -0500
--- oclock-1.0.6.4/Clock.c	2025-03-07 09:33:29.470821100 -0500
***************
*** 55,72 ****
          goffset(width), XtRImmediate, (XtPointer) 120},
      {XtNheight, XtCHeight, XtRDimension, sizeof(Dimension),
  	goffset(height), XtRImmediate, (XtPointer) 120},
      {XtNminute, XtCForeground, XtRPixel, sizeof (Pixel),
! 	offset(minute), XtRString, XtDefaultForeground},
      {XtNhour, XtCForeground, XtRPixel, sizeof (Pixel),
! 	offset(hour), XtRString, XtDefaultForeground},
      {XtNjewel, XtCForeground, XtRPixel, sizeof (Pixel),
! 	offset(jewel), XtRString, XtDefaultForeground},
!     {XtNbackingStore, XtCBackingStore, XtRBackingStore, sizeof (int),
!     	offset (backing_store), XtRString, "default"},
      {XtNborderSize, XtCBorderSize, XtRFloat, sizeof (float),
! 	offset (border_size), XtRString, "0.1"},
      {XtNjewelSize, XtCBorderSize, XtRFloat, sizeof (float),
! 	offset (jewel_size), XtRString, "0.075"},
      {XtNshapeWindow, XtCShapeWindow, XtRBoolean, sizeof (Boolean),
  	offset (shape_window), XtRImmediate, (XtPointer) True},
      {XtNtransparent, XtCTransparent, XtRBoolean, sizeof (Boolean),
--- 55,74 ----
          goffset(width), XtRImmediate, (XtPointer) 120},
      {XtNheight, XtCHeight, XtRDimension, sizeof(Dimension),
  	goffset(height), XtRImmediate, (XtPointer) 120},
+     {XtNborderWidth, XtCBorderWidth, XtRDimension, sizeof(Dimension),
+  	goffset(border_width), XtRImmediate, (XtPointer) 0},
      {XtNminute, XtCForeground, XtRPixel, sizeof (Pixel),
! 	offset(minute), XtRString, (char *) XtDefaultForeground},
      {XtNhour, XtCForeground, XtRPixel, sizeof (Pixel),
! 	offset(hour), XtRString, (char *) XtDefaultForeground},
      {XtNjewel, XtCForeground, XtRPixel, sizeof (Pixel),
! 	offset(jewel), XtRString, (char *) XtDefaultForeground},
!     {(char *) XtNbackingStore, (char *) XtCBackingStore, (char *) XtRBackingStore, sizeof (int),
!     	offset (backing_store), XtRString, (char *) "default"},
      {XtNborderSize, XtCBorderSize, XtRFloat, sizeof (float),
! 	offset (border_size), XtRString, (char *) "0.1"},
      {XtNjewelSize, XtCBorderSize, XtRFloat, sizeof (float),
! 	offset (jewel_size), XtRString, (char *) "0.075"},
      {XtNshapeWindow, XtCShapeWindow, XtRBoolean, sizeof (Boolean),
  	offset (shape_window), XtRImmediate, (XtPointer) True},
      {XtNtransparent, XtCTransparent, XtRBoolean, sizeof (Boolean),
***************
*** 101,114 ****
  ClockClassRec clockClassRec = {
      { /* core fields */
      /* superclass		*/	&widgetClassRec,
!     /* class_name		*/	"Clock",
      /* size			*/	sizeof(ClockRec),
      /* class_initialize		*/	ClassInitialize,
      /* class_part_initialize	*/	NULL,
      /* class_inited		*/	FALSE,
!     /* initialize		*/	Initialize,
      /* initialize_hook		*/	NULL,
!     /* realize			*/	Realize,
      /* actions			*/	NULL,
      /* num_actions		*/	0,
      /* resources		*/	resources,
--- 103,116 ----
  ClockClassRec clockClassRec = {
      { /* core fields */
      /* superclass		*/	&widgetClassRec,
!     /* class_name		*/	(char *) "Clock",
      /* size			*/	sizeof(ClockRec),
      /* class_initialize		*/	ClassInitialize,
      /* class_part_initialize	*/	NULL,
      /* class_inited		*/	FALSE,
!     /* initialize		*/	(XtInitProc) Initialize,
      /* initialize_hook		*/	NULL,
!     /* realize			*/	(XtRealizeProc) Realize,
      /* actions			*/	NULL,
      /* num_actions		*/	0,
      /* resources		*/	resources,
***************
*** 118,126 ****
      /* compress_exposure	*/	TRUE,
      /* compress_enterleave	*/	TRUE,
      /* visible_interest		*/	FALSE,
!     /* destroy			*/	Destroy,
!     /* resize			*/	Resize,
!     /* expose			*/	Redisplay,
      /* set_values		*/	NULL,
      /* set_values_hook		*/	NULL,
      /* set_values_almost	*/	NULL,
--- 120,128 ----
      /* compress_exposure	*/	TRUE,
      /* compress_enterleave	*/	TRUE,
      /* visible_interest		*/	FALSE,
!     /* destroy			*/	(XtWidgetProc) Destroy,
!     /* resize			*/	(XtWidgetProc) Resize,
!     /* expose			*/	(XtExposeProc) Redisplay,
      /* set_values		*/	NULL,
      /* set_values_hook		*/	NULL,
      /* set_values_almost	*/	NULL,
***************
*** 135,141 ****
  
  static void ClassInitialize(void)
  {
!     XtAddConverter( XtRString, XtRBackingStore, XmuCvtStringToBackingStore,
  		    NULL, 0 );
  }
  
--- 137,144 ----
  
  static void ClassInitialize(void)
  {
!     XtAddConverter( XtRString, XtRBackingStore,
! 		    (XtConverter) XmuCvtStringToBackingStore,
  		    NULL, 0 );
  }
  
***************
*** 149,162 ****
      XtGCMask	valuemask;
      XGCValues	myXGCV;
      int shape_event_base, shape_error_base;
  
      valuemask = GCForeground;
  
!     if (w->clock.transparent)
!     {
! 	;
      }
!     else
      {
      	myXGCV.foreground = w->clock.minute;
      	w->clock.minuteGC = XtGetGC(gnew, valuemask, &myXGCV);
--- 152,170 ----
      XtGCMask	valuemask;
      XGCValues	myXGCV;
      int shape_event_base, shape_error_base;
+     double bs = w->clock.border_size;
  
      valuemask = GCForeground;
  
!     if ((w->clock.shape_window || w->clock.transparent)
! 		&& !XShapeQueryExtension (XtDisplay (w),
! 							&shape_event_base,
! 							&shape_error_base)) {
! 	w->clock.shape_window = False;
! 	w->clock.transparent = False;
      }
! 
!     if (!w->clock.transparent)
      {
      	myXGCV.foreground = w->clock.minute;
      	w->clock.minuteGC = XtGetGC(gnew, valuemask, &myXGCV);
***************
*** 174,189 ****
      /* wait for Realize to add the timeout */
      w->clock.interval_id = 0;
  
-     if (w->clock.shape_window && !XShapeQueryExtension (XtDisplay (w),
- 							&shape_event_base,
- 							&shape_error_base))
-         w->clock.shape_window = False;
- 
      w->clock.shape_mask = 0;
      w->clock.shapeGC = NULL;
      w->clock.shape_width = 0;
      w->clock.shape_height = 0;
      w->clock.polys_valid = 0;
  }
  
  static void Resize (Widget widget)
--- 182,198 ----
      /* wait for Realize to add the timeout */
      w->clock.interval_id = 0;
  
      w->clock.shape_mask = 0;
      w->clock.shapeGC = NULL;
      w->clock.shape_width = 0;
      w->clock.shape_height = 0;
      w->clock.polys_valid = 0;
+ 
+     if (w->core.width + w->core.height > 0 && w->core.border_width > 0) {
+ 	bs = 2.0 * (w->core.border_width - 1) / (w->core.width + w->core.height);
+ 	if (bs < 1.0)
+ 		w->clock.border_size = bs;
+     }
  }
  
  static void Resize (Widget widget)
***************
*** 213,219 ****
       *  shape the windows and borders
       */
  
!     if (w->clock.shape_window) {
  	Widget	parent;
  	Pixmap	shape_mask;
  	int	x, y;
--- 222,228 ----
       *  shape the windows and borders
       */
  
!     if (w->clock.transparent || w->clock.shape_window) {
  	Widget	parent;
  	Pixmap	shape_mask;
  	int	x, y;
***************
*** 256,268 ****
  	 * eliminates extra exposure events.
  	 */
  
! 	if (w->clock.border_size > 0.0 || !w->clock.transparent)
  	{
  	    TFillArc (XtDisplay (w), shape_mask,
  			    w->clock.shapeGC, &w->clock.maskt,
  			    -1.0, -1.0,
  			    2.0, 2.0,
  			    0, 360 * 64);
  	}
  
  	if (w->clock.transparent)
--- 265,283 ----
  	 * eliminates extra exposure events.
  	 */
  
! 	if ((w->clock.border_size > 0.0 && w->clock.shape_window) || !w->clock.transparent)
  	{
  	    TFillArc (XtDisplay (w), shape_mask,
  			    w->clock.shapeGC, &w->clock.maskt,
  			    -1.0, -1.0,
  			    2.0, 2.0,
  			    0, 360 * 64);
+ 	} else if ((w->clock.border_size > 0.0 && !w->clock.shape_window) || !w->clock.transparent)
+ 	{
+ 	    TFillRectangle (XtDisplay (w), shape_mask,
+ 			    w->clock.shapeGC, &w->clock.maskt,
+ 			    -1.0, -1.0,
+ 			    2.0, 2.0);
  	}
  
  	if (w->clock.transparent)
***************
*** 270,280 ****
  	    if (w->clock.border_size > 0.0)
  	    {
  	    	XSetForeground (XtDisplay (w), w->clock.shapeGC, 0);
! 	    	TFillArc (XtDisplay (w), shape_mask,
! 			    	w->clock.shapeGC, &w->clock.t,
! 			    	-WINDOW_WIDTH(w)/2, -WINDOW_HEIGHT(w)/2,
! 			    	WINDOW_WIDTH(w), WINDOW_HEIGHT(w),
! 			    	0, 360 * 64);
  	    	XSetForeground (XtDisplay (w), w->clock.shapeGC, 1);
  	    }
  	    paint_jewel (w, shape_mask, w->clock.shapeGC);
--- 285,291 ----
  	    if (w->clock.border_size > 0.0)
  	    {
  	    	XSetForeground (XtDisplay (w), w->clock.shapeGC, 0);
! 		paint_face(w, shape_mask, w->clock.shapeGC);
  	    	XSetForeground (XtDisplay (w), w->clock.shapeGC, 1);
  	    }
  	    paint_jewel (w, shape_mask, w->clock.shapeGC);
***************
*** 311,321 ****
  	}
  	else
  	{
! 	    TFillArc (XtDisplay (w), shape_mask,
! 			    w->clock.shapeGC, &w->clock.t,
! 			    -WINDOW_WIDTH(w)/2, -WINDOW_HEIGHT(w)/2,
! 			    WINDOW_WIDTH(w), WINDOW_HEIGHT(w),
! 			    0, 360 * 64);
  	}
  
  	XShapeCombineMask (XtDisplay (w), XtWindow (w), ShapeClip,
--- 322,328 ----
  	}
  	else
  	{
! 	    paint_face(w, shape_mask, w->clock.shapeGC);
  	}
  
  	XShapeCombineMask (XtDisplay (w), XtWindow (w), ShapeClip,
***************
*** 426,435 ****
  	Time_t		now;
  	struct tm	*tm;
  
! 	if (!w->clock.transparent)
! 	if (w->clock.polys_valid) {
  		paint_hands (w, XtWindow (w), w->clock.eraseGC, w->clock.eraseGC);
  		check_jewel (w, XtWindow (w), w->clock.jewelGC);
  	}
  	(void) time (&now);
  	tm = localtime (&now);
--- 433,447 ----
  	Time_t		now;
  	struct tm	*tm;
  
! 	if (!w->clock.transparent && w->clock.polys_valid) {
! #ifdef __CYGWIN__
! 		/* Drawing errors if Window comes out of screensaver */
! 		paint_face (w, XtWindow (w), w->clock.eraseGC);
! 		paint_jewel (w, XtWindow (w), w->clock.jewelGC);
! #else
  		paint_hands (w, XtWindow (w), w->clock.eraseGC, w->clock.eraseGC);
  		check_jewel (w, XtWindow (w), w->clock.jewelGC);
+ #endif
  	}
  	(void) time (&now);
  	tm = localtime (&now);
***************
*** 446,452 ****
  	 */
  	w->clock.interval_id =
  	    XtAppAddTimeOut (XtWidgetToApplicationContext((Widget) w),
! 			     (60 - tm->tm_sec) * 1000, new_time, client_data);
  	compute_hands (w);
  	if (w->clock.transparent)
  	    Resize ((Widget)w);
--- 458,465 ----
  	 */
  	w->clock.interval_id =
  	    XtAppAddTimeOut (XtWidgetToApplicationContext((Widget) w),
! 			     (60 - tm->tm_sec) * 1000,
! 			     (XtTimerCallbackProc) new_time, client_data);
  	compute_hands (w);
  	if (w->clock.transparent)
  	    Resize ((Widget)w);
***************
*** 568,570 ****
--- 581,598 ----
  	paint_hand (w, d, minute_gc, w->clock.minute_poly);
      }
  }
+ 
+ void
+ paint_face (ClockWidget w, Drawable d, GC gc)
+ {
+ 	if (w->clock.shape_window) {
+     		TFillArc (XtDisplay (w), d, gc, &w->clock.t,
+ 		    	-WINDOW_WIDTH(w)/2, -WINDOW_HEIGHT(w)/2,
+ 		    	WINDOW_WIDTH(w), WINDOW_HEIGHT(w),
+ 		    	0, 360 * 64);
+         } else {
+     		TFillRectangle (XtDisplay (w), d, gc, &w->clock.t,
+ 		    	-WINDOW_WIDTH(w)/2, -WINDOW_HEIGHT(w)/2,
+ 		    	WINDOW_WIDTH(w), WINDOW_HEIGHT(w));
+         }
+ }
diff -rc --new-file oclock-1.0.6/Clock.h oclock-1.0.6.4/Clock.h
*** oclock-1.0.6/Clock.h	2024-12-04 15:58:37.000000000 -0500
--- oclock-1.0.6.4/Clock.h	2025-02-21 21:03:01.000000000 -0500
***************
*** 52,69 ****
  
  */
  
! #define XtNminute	"minute"
! #define XtNhour		"hour"
! #define XtNjewel	"jewel"
  
! #define XtNshapeWindow	"shapeWindow"
! #define XtCShapeWindow	"ShapeWindow"
! #define XtNtransparent	"transparent"
! #define XtCTransparent	"Transparent"
  
! #define XtNjewelSize	"jewelSize"
! #define XtNborderSize	"borderSize"
! #define XtCBorderSize	"BorderSize"
  
  typedef struct _ClockRec *ClockWidget;  /* completely defined in ClockPrivate.h */
  typedef struct _ClockClassRec *ClockWidgetClass;    /* completely defined in ClockPrivate.h */
--- 52,69 ----
  
  */
  
! #define XtNminute	(char *) "minute"
! #define XtNhour		(char *) "hour"
! #define XtNjewel	(char *) "jewel"
  
! #define XtNshapeWindow	(char *) "shapeWindow"
! #define XtCShapeWindow	(char *) "ShapeWindow"
! #define XtNtransparent	(char *) "transparent"
! #define XtCTransparent	(char *) "Transparent"
  
! #define XtNjewelSize	(char *) "jewelSize"
! #define XtNborderSize	(char *) "borderSize"
! #define XtCBorderSize	(char *) "BorderSize"
  
  typedef struct _ClockRec *ClockWidget;  /* completely defined in ClockPrivate.h */
  typedef struct _ClockClassRec *ClockWidgetClass;    /* completely defined in ClockPrivate.h */
diff -rc --new-file oclock-1.0.6/ClockP.h oclock-1.0.6.4/ClockP.h
*** oclock-1.0.6/ClockP.h	2024-12-04 15:58:37.000000000 -0500
--- oclock-1.0.6.4/ClockP.h	2025-03-06 20:41:35.466588600 -0500
***************
*** 91,95 ****
--- 91,96 ----
  extern void compute_hands ( ClockWidget w );
  extern void paint_hand ( ClockWidget w, Drawable d, GC gc, TPoint poly[6] );
  extern void paint_hands ( ClockWidget w, Drawable d, GC minute_gc, GC hour_gc );
+ extern void paint_face ( ClockWidget w, Drawable d, GC gc );
  
  #endif /* _ClockP_h */
diff -rc --new-file oclock-1.0.6/descrip.mms oclock-1.0.6.4/descrip.mms
*** oclock-1.0.6/descrip.mms	1969-12-31 19:00:00.000000000 -0500
--- oclock-1.0.6.4/descrip.mms	2025-03-05 15:03:14.833176690 -0500
***************
*** 0 ****
--- 1,63 ----
+ C=.c
+ O=.obj
+ E=.exe
+ V=oclock-1.0.6
+ 
+ #CC_DEFS =/name=(as_is,short)/float=ieee
+ 
+ # sys$share:decw$include/xmu replaced
+ CC_DEFS =/define=(EDITRES,"_X_NORETURN=","PACKAGE_STRING=""$(V)""")/name=(as_is,short)/float=ieee
+ 
+ CXX_DEFS = "-DEDITRES" "-D_X_NORETURN"= "-DPACKAGE_STRING"="""$(V)""" -names=as_is
+ 
+ CC_DEB =
+ 
+ OBJS=\
+ Clock$(O) \
+ transform$(O) \
+ oclock$(O)
+ 
+ CFLAGS=$(C_DEB) $(CC_DEFS)
+ 
+ CXXFLAGS=$(CXX_DEFS)
+ 
+ $(C)$(O) :
+ 	cc $(CFLAGS) $(MMS$TARGET_NAME)$(C)
+ 
+ #	cc $(CFLAGS) $(MMS$TARGET_NAME)$(C)
+ #	clang $(CXXFLAGS) -o $(MMS$TARGET_NAME)$(O) $(MMS$TARGET_NAME)$(C)
+ 
+ all : oclock$(E)
+ 	@ directory oclock$(E)
+ 
+ Clock$(O) : Clock$(C) ClockP.h Clock.h
+ transform$(O) : transform$(C)
+ oclock$(O) : oclock$(C) Clock.h
+ 
+ oclock.opt :
+ 	close/nolog optf
+ 	open/write optf oclock.opt
+ 	write optf "Clock$(O)"
+ 	write optf "oclock$(O)"
+ 	write optf "transform$(O)"
+ 	write optf "sys$share:decw$xlibshr/share"
+ 	write optf "sys$share:decw$xtlibshrr5/share"
+ 	write optf "sys$share:decw$xextlibshr/share"
+ #	write optf "sys$share:decw$xmulibshr/share"
+ 	write optf "sys$share:libxmu.exe/share"
+ #	write optf "sys$library:libxmu.olb/lib"
+ #	write optf "sys$library:libxmu_cxx.olb/lib"
+ 	close optf
+ 
+ oclock$(E) : $(OBJS) oclock.opt
+ 	link/map/exec=[] oclock/opt
+ 
+ clobber :
+ 	close/nolog optf
+ 	purge
+ 	delete *.obj;*,*.opt;*,*.map;*,*.exe;*
+ 
+ clean :
+ 	close/nolog optf
+ 	purge
+ 	delete *.obj;*,*.opt;*,*.map;*
diff -rc --new-file oclock-1.0.6/Makefile.in oclock-1.0.6.4/Makefile.in
*** oclock-1.0.6/Makefile.in	2024-12-04 15:58:42.000000000 -0500
--- oclock-1.0.6.4/Makefile.in	2025-03-02 18:31:55.000000000 -0500
***************
*** 332,338 ****
  MISC_MAN_SUFFIX = @MISC_MAN_SUFFIX@
  MKDIR_P = @MKDIR_P@
  OBJEXT = @OBJEXT@
! OCLOCK_CFLAGS = @OCLOCK_CFLAGS@
  OCLOCK_LIBS = @OCLOCK_LIBS@
  PACKAGE = @PACKAGE@
  PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@
--- 332,338 ----
  MISC_MAN_SUFFIX = @MISC_MAN_SUFFIX@
  MKDIR_P = @MKDIR_P@
  OBJEXT = @OBJEXT@
! OCLOCK_CFLAGS = @OCLOCK_CFLAGS@ -DEDITRES
  OCLOCK_LIBS = @OCLOCK_LIBS@
  PACKAGE = @PACKAGE@
  PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@
diff -rc --new-file oclock-1.0.6/oclock.c oclock-1.0.6.4/oclock.c
*** oclock-1.0.6/oclock.c	2024-12-04 15:58:37.000000000 -0500
--- oclock-1.0.6.4/oclock.c	2025-03-05 19:18:49.517037003 -0500
***************
*** 32,38 ****
--- 32,44 ----
  #include <X11/Xatom.h>
  #include <X11/StringDefs.h>
  #include <X11/Shell.h>
+ #ifdef EDITRES
+ #ifdef __VMS
+ #include <Xmu/Editres.h>
+ #else
  #include <X11/Xmu/Editres.h>
+ #endif
+ #endif
  #include "Clock.h"
  #include <stdio.h>
  #include <stdlib.h>
***************
*** 52,58 ****
  
  
  static XtActionsRec actions[] = {
!     {"quit",	quit}
  };
  
  static Atom wm_delete_window;
--- 58,64 ----
  
  
  static XtActionsRec actions[] = {
!     {(char *) "quit",	(XtActionProc) quit}
  };
  
  static Atom wm_delete_window;
***************
*** 88,104 ****
     pass over the remaining options after XtParseCommand is let loose. */
  
  static XrmOptionDescRec options[] = {
! {"-fg",		"*Foreground",		XrmoptionSepArg,	NULL},
! {"-bg",		"*Background",		XrmoptionSepArg,	NULL},
! {"-foreground",	"*Foreground",		XrmoptionSepArg,	NULL},
! {"-background",	"*Background",		XrmoptionSepArg,	NULL},
! {"-minute",	"*clock.minute",	XrmoptionSepArg,	NULL},
! {"-hour",	"*clock.hour",		XrmoptionSepArg,	NULL},
! {"-jewel",	"*clock.jewel",		XrmoptionSepArg,	NULL},
! {"-backing",	"*clock.backingStore",	XrmoptionSepArg,	NULL},
! {"-shape",	"*clock.shapeWindow",	XrmoptionNoArg,		"TRUE"},
! {"-noshape",	"*clock.shapeWindow",	XrmoptionNoArg,		"FALSE"},
! {"-transparent","*clock.transparent",	XrmoptionNoArg,		"TRUE"},
  };
  
  int
--- 94,111 ----
     pass over the remaining options after XtParseCommand is let loose. */
  
  static XrmOptionDescRec options[] = {
! {(char *)"-fg",	(char *)"*Foreground",	XrmoptionSepArg,	NULL},
! {(char *)"-bg",	(char *)"*Background",	XrmoptionSepArg,	NULL},
! {(char *)"-foreground",	(char *)"*Foreground",	XrmoptionSepArg,	NULL},
! {(char *)"-background",	(char *)"*Background",	XrmoptionSepArg,	NULL},
! {(char *)"-bw",	(char *)"*BorderWidth",	XrmoptionSepArg,	NULL},
! {(char *)"-minute", 	(char *)"*clock.minute",	XrmoptionSepArg,	NULL},
! {(char *)"-hour",	(char *)"*clock.hour",	XrmoptionSepArg,	NULL},
! {(char *)"-jewel",	(char *)"*clock.jewel",	XrmoptionSepArg,	NULL},
! {(char *)"-backing",	(char *)"*clock.backingStore",	XrmoptionSepArg,	NULL},
! {(char *)"-shape",	(char *)"*clock.shapeWindow",	XrmoptionNoArg,		(char *)"TRUE"},
! {(char *)"-noshape",	(char *)"*clock.shapeWindow",	XrmoptionNoArg,		(char *)"FALSE"},
! {(char *)"-transparent",	(char *)"*clock.transparent",	XrmoptionNoArg,	(char *)"TRUE"},
  };
  
  int
***************
*** 167,174 ****
      (void) XSetWMProtocols (XtDisplay(toplevel), XtWindow(toplevel),
                              &wm_delete_window, 1);
  
      XtAddEventHandler(toplevel, (EventMask) 0, TRUE,
! 		      _XEditResCheckMessages, NULL);
  
      XtAppMainLoop(xtcontext);
      exit(0);
--- 174,183 ----
      (void) XSetWMProtocols (XtDisplay(toplevel), XtWindow(toplevel),
                              &wm_delete_window, 1);
  
+ #ifdef EDITRES
      XtAddEventHandler(toplevel, (EventMask) 0, TRUE,
! 		      (XtEventHandler) _XEditResCheckMessages, NULL);
! #endif
  
      XtAppMainLoop(xtcontext);
      exit(0);
diff -rc --new-file oclock-1.0.6/README_oclock_fixes.txt oclock-1.0.6.4/README_oclock_fixes.txt
*** oclock-1.0.6/README_oclock_fixes.txt	1969-12-31 19:00:00.000000000 -0500
--- oclock-1.0.6.4/README_oclock_fixes.txt	2025-03-08 19:09:23.114361697 -0500
***************
*** 0 ****
--- 1,11 ----
+ bagleyd AT verizon.net added this to oclock-1.0.6
+ 1. Fixed "oclock -noshape -transparent", now works as one would expect.
+ 2. Help and man page defined a -bw but does not work, fixed -bw 1 now
+   works -bw 0 defaults to noop, kind of needed as its unsigned.
+ 3. Fixed some annoying warnings when compiled in g++/clang.
+ 4. Added -DEDITRES so VMS default compile without Editres.
+ 5. Added descrip.mms for VMS build.
+ 6. Fixed Cygwin dirt when Window goes into screen saver.  Did not
+   touch -transparent, where screen dirt fixes itself in a few minutes.
+ 
+ Note: built on Linux/Cygwin with "./configure --without-xkb"
diff -rc --new-file oclock-1.0.6/transform.c oclock-1.0.6.4/transform.c
*** oclock-1.0.6/transform.c	2024-12-04 15:58:37.000000000 -0500
--- oclock-1.0.6.4/transform.c	2025-02-26 19:05:54.000000000 -0500
***************
*** 71,76 ****
--- 71,97 ----
  }
  
  void
+ TFillRectangle (register Display *dpy, Drawable d, GC gc, Transform *t,
+ 	  double x, double y, double width, double height)
+ {
+ 	int	xx, xy, xw, xh;
+ 
+ 	xx = Xx(x,y,t);
+ 	xy = Xy(x,y,t);
+ 	xw = Xwidth (width, height, t);
+ 	xh = Xheight (width, height, t);
+ 	if (xw < 0) {
+ 		xx += xw;
+ 		xw = -xw;
+ 	}
+ 	if (xh < 0) {
+ 		xy += xh;
+ 		xh = -xh;
+ 	}
+ 	XFillRectangle (dpy, d, gc, xx, xy, xw, xh);
+ }
+ 
+ void
  TFillArc (register Display *dpy, Drawable d, GC gc, Transform *t,
  	  double x, double y, double width, double height,
  	  int angle1, int angle2)
diff -rc --new-file oclock-1.0.6/transform.h oclock-1.0.6.4/transform.h
*** oclock-1.0.6/transform.h	2024-12-04 15:58:37.000000000 -0500
--- oclock-1.0.6.4/transform.h	2025-03-05 15:25:46.757631445 -0500
***************
*** 56,61 ****
--- 56,63 ----
  
  extern void TFillPolygon ( Display *dpy, Drawable d, GC gc, Transform *t,
  			   TPoint *points, int n_points, int shape, int mode );
+ extern void TFillRectangle ( Display *dpy, Drawable d, GC gc, Transform *t,
+ 		       double x, double y, double width, double height );
  extern void TFillArc ( Display *dpy, Drawable d, GC gc, Transform *t,
  		       double x, double y, double width, double height,
  		       int angle1, int angle2 );
