The help-text panel (DisplayArea) inside Print Manager's Help windows (File →
On Item, Help → About, etc.) is rendered with the inherited Motif color-set back
ground instead of the white background that lib/DtSvc/DtUtil2/Dt.ad declares f
or every DtHelpDialog. Compare with, e.g. dtpad's identical Help → About win
dow, which is correctly white.
dtprintinfo).dtpad).Both help windows render the DisplayArea (the text-reading panel below the top
ic list) with a white background, matching Dt.ad's intent
Text Editor's DisplayArea is white. Print Manager's DisplayArea inherits the dtsession color set (salmon on the default "Sand" palette).
lib/DtSvc/DtUtil2/Dt.ad lines 54–57:
*XmDialogShell.DtHelpDialog*DisplayArea.background: White
*XmDialogShell*XmDialogShell.DtHelpDialog*DisplayArea.background: White
*XmDialogShell.DtHelpDialog*DisplayArea.foreground: Black
*XmDialogShell*XmDialogShell.DtHelpDialog*DisplayArea.foreground: Black
and the matching DtHelpQuickDialog block at lines 60–63 are scoped to the XmDialogShell shell class. Whether a given DtHelpDialog ends up under an XmDialogShell depends on what widget the application passes to DtCreateHelpDialog():
dtpad (programs/dtpad/helpDlg.c:151) passes pPad->app_shell, the top-level ApplicationShell. Motif wraps the popup in an XmDialogShell. The Dt.ad resource matches → white.dtprintinfo (programs/dtprintinfo/libUI/MotifUI/HelpSystem.C:78) passes parent->InnerWidget(), a non-shell work-area widget. Motif creates a TransientShell (or similar) for the popup. The Dt.ad XmDialogShell-prefixed resource does not match. The DisplayArea background falls through to the desktop color set → salmon.So the override only covers one of the two shell-class outcomes DtCreateHelpDialog can produce, which contradicts the Dt.ad comment's stated intent ("override the standard color resources in all cases"). Any application that creates its help dialog with a non-shell parent hits the same problem; dtprintinfo just happens to be the visible one.
Drop the XmDialogShell qualifier so the override is unconditional:
--- a/lib/DtSvc/DtUtil2/Dt.ad
+++ b/lib/DtSvc/DtUtil2/Dt.ad
@@ -51,15 +51,11 @@
!# in all cases.
!#
-*XmDialogShell.DtHelpDialog*DisplayArea.background: White
-*XmDialogShell*XmDialogShell.DtHelpDialog*DisplayArea.background: White
-*XmDialogShell.DtHelpDialog*DisplayArea.foreground: Black
-*XmDialogShell*XmDialogShell.DtHelpDialog*DisplayArea.foreground: Black
+*DtHelpDialog*DisplayArea.background: White
+*DtHelpDialog*DisplayArea.foreground: Black
-*XmDialogShell.DtHelpQuickDialog*DisplayArea.background: White
-*XmDialogShell*XmDialogShell.DtHelpQuickDialog*DisplayArea.background: White
-*XmDialogShell.DtHelpQuickDialog*DisplayArea.foreground: Black
-*XmDialogShell*XmDialogShell.DtHelpQuickDialog*DisplayArea.foreground: Black
+*DtHelpQuickDialog*DisplayArea.background: White
+*DtHelpQuickDialog*DisplayArea.foreground: Black
This catches every DtHelpDialog / DtHelpQuickDialog regardless of which shell class Motif chooses for its popup parent. The trade-off is that help widgets embedded directly inside an app's main window (rather than in a popup) would also pick up white instead of the app's color set; no in-tree CDE app embeds help that way today, and the result would still be readable.
An alternative narrower fix is to add TransientShell-prefixed mirrors of the existing lines, but that just pushes the problem to the next shell class an application happens to use.