--- openmotif-2.3.0-orig/lib/Xm/IconButton.c 2005-10-17 15:15:51.000000000 +0200 +++ openmotif-2.3.0/lib/Xm/IconButton.c 2008-02-16 00:48:53.000000000 +0100 @@ -1836,7 +1836,7 @@ values.fill_style = FillStippled; mask = GCForeground | GCBackground | GCGraphicsExposures; - smask = mask | GCStipple | GCFillStyle; + smask = mask | GCFillStyle; if (fs) { values.font = fs->fid; @@ -1844,6 +1844,7 @@ } XmIconButton_gc(iw) = XtGetGC(w, mask, &values); + values.foreground = _XmAssignInsensitiveColor(w); XmIconButton_stippled_text_gc(iw) = XtGetGC(w, smask, &values); /* --- openmotif-2.3.0-orig/lib/Xm/IconG.c 2003-10-06 12:10:24.000000000 +0200 +++ openmotif-2.3.0/lib/Xm/IconG.c 2008-02-16 00:48:53.000000000 +0100 @@ -3134,9 +3134,9 @@ /** insensitive gc **/ - values.foreground = IG_Foreground(wid) ; + values.foreground = _XmAssignInsensitiveColor(XtParent(wid)); values.background = IG_Background(wid) ; - valueMask |= GCFillStyle | GCStipple; + valueMask |= GCFillStyle; values.fill_style = FillOpaqueStippled; values.stipple = _XmGetInsensitiveStippleBitmap(wid); --- openmotif-2.3.0-orig/lib/Xm/Label.c 2006-12-21 20:21:27.000000000 +0100 +++ openmotif-2.3.0/lib/Xm/Label.c 2008-02-16 00:48:53.000000000 +0100 @@ -688,8 +688,8 @@ lw->label.normal_GC = XtAllocateGC((Widget) lw, 0, valueMask, &values, dynamicMask, 0); - valueMask |= GCFillStyle | GCStipple; - values.foreground = lw->core.background_pixel; + valueMask |= GCFillStyle; + values.foreground = _XmAssignInsensitiveColor((Widget)lw); values.background = lw->primitive.foreground; values.fill_style = FillOpaqueStippled; values.stipple = _XmGetInsensitiveStippleBitmap((Widget) lw); @@ -1557,7 +1557,7 @@ lp->StringRect.width, lp->alignment, XmPrim_layout_direction(lw), NULL); -#ifdef USE_XFT +#if 0 if (!XtIsSensitive(wid)) { XSetFillStyle(XtDisplay(lw), lp->insensitive_GC, FillStippled); --- openmotif-2.3.0-orig/lib/Xm/LabelG.c 2006-12-26 18:37:09.000000000 +0100 +++ openmotif-2.3.0/lib/Xm/LabelG.c 2008-02-16 00:48:53.000000000 +0100 @@ -1247,8 +1247,8 @@ LabG_NormalGC(lw) = XtAllocateGC((Widget) mw, 0, valueMask, &values, dynamicMask, 0); - valueMask |= GCFillStyle | GCStipple; - values.foreground = LabG_Background(lw); + valueMask |= GCFillStyle; + values.foreground = _XmAssignInsensitiveColor((Widget)mw); values.background = LabG_Foreground(lw); values.fill_style = FillOpaqueStippled; @@ -2435,7 +2435,7 @@ lw->rectangle.y + LabG_TextRect(lw).y + LabG_StringRect(lw).y, LabG_StringRect(lw).width, LabG_Alignment(lw), LayoutG(lw), NULL); -#ifdef USE_XFT +#if 0 if (!XtIsSensitive(wid)) { XSetFillStyle(XtDisplay(lw), LabG_InsensitiveGC(lw), FillStippled); XFillRectangle(XtDisplay(lw), XtWindow(lw), LabG_InsensitiveGC(lw), --- openmotif-2.3.0-orig/lib/Xm/List.c 2007-01-24 18:07:35.000000000 +0100 +++ openmotif-2.3.0/lib/Xm/List.c 2008-02-16 00:48:53.000000000 +0100 @@ -2758,9 +2758,9 @@ lw->list.InverseGC = XtAllocateGC((Widget) lw, lw->core.depth, valueMask, &values, modifyMask, 0); - values.foreground = lw->primitive.foreground; + values.foreground = _XmAssignInsensitiveColor(lw); values.background = lw->core.background_pixel; - valueMask |= GCStipple | GCFillStyle; + valueMask |= GCFillStyle; values.fill_style = FillOpaqueStippled; values.stipple = _XmGetInsensitiveStippleBitmap((Widget) lw); --- openmotif-2.3.0-orig/lib/Xm/TextF.c 2006-08-28 15:53:30.000000000 +0200 +++ openmotif-2.3.0/lib/Xm/TextF.c 2008-02-16 00:48:53.000000000 +0100 @@ -1960,8 +1960,7 @@ valueMask |= GCFillStyle; if (stipple) { values.fill_style = FillStippled; - valueMask |= GCStipple; - values.stipple = tf->text.stipple_tile; + values.foreground = _XmAssignInsensitiveColor((Widget)tf); } else values.fill_style = FillSolid; } --- openmotif-2.3.0-orig/lib/Xm/TextOut.c 2006-12-12 12:54:14.000000000 +0100 +++ openmotif-2.3.0/lib/Xm/TextOut.c 2008-02-16 00:48:53.000000000 +0100 @@ -625,8 +625,7 @@ valueMask |= GCFillStyle; if (stipple) { values.fill_style = FillStippled; - valueMask |= GCStipple; - values.stipple = data->stipple_tile; + values.foreground = _XmAssignInsensitiveColor((Widget)tw); } else values.fill_style = FillSolid; } --- openmotif-2.3.0-orig/lib/Xm/Xm.c 2005-12-19 11:32:36.000000000 +0100 +++ openmotif-2.3.0/lib/Xm/Xm.c 2008-02-16 00:48:53.000000000 +0100 @@ -426,3 +426,45 @@ _XmAppUnlock(app); return return_wid; } + +/************************************************************************ + * + * _XmAssignInsensitiveColor + * Allocate the Gray color for display widget like insensitive. + * + * + ************************************************************************/ + +Pixel +_XmAssignInsensitiveColor(Widget w) +{ + static XColor screen_in_out; + int status; + Pixel p; + + p = w->core.background_pixel; + XQueryColor(XtDisplay(w), w->core.colormap, &screen_in_out); + if ((abs(screen_in_out.red-RGB_GREY_VALUE)core.colormap, &screen_in_out); + if (status) + p = screen_in_out.pixel; + } else { + /*gray color*/ + screen_in_out.red=RGB_GREY_VALUE<<8; + screen_in_out.green=RGB_GREY_VALUE<<8; + screen_in_out.blue=RGB_GREY_VALUE<<8; + + status = XAllocColor(XtDisplay(w), w->core.colormap, &screen_in_out); + if (status) + p = screen_in_out.pixel; + } + + return p; +} --- openmotif-2.3.0-orig/lib/Xm/XmI.h 2005-12-19 11:32:36.000000000 +0100 +++ openmotif-2.3.0/lib/Xm/XmI.h 2008-02-16 00:48:53.000000000 +0100 @@ -276,5 +276,9 @@ } /* Close scope of 'extern "C"' declaration which encloses file. */ #endif +#define RGB_GREY_VALUE 128 +#define RGB_GREY_PRESISE 50 +extern Pixel _XmAssignInsensitiveColor(Widget w); + #endif /* _XmI_h */ /* DON'T ADD ANYTHING AFTER THIS #endif */