summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDave Love <fx@gnu.org>1999-09-30 21:29:02 +0000
committerDave Love <fx@gnu.org>1999-09-30 21:29:02 +0000
commita08cb76c5a7501b8da3926e752559801bccbc0d4 (patch)
tree13e737cc3af2020f3b17c5e4576b7b6ef6e8f07f
parent8cc3881faf5a8595d8f62ba80b7b7e3b43c642f4 (diff)
#
-rw-r--r--lwlib/ChangeLog642
-rw-r--r--lwlib/Imakefile244
-rw-r--r--lwlib/README5
-rw-r--r--lwlib/dispatch.h2
-rw-r--r--lwlib/xrdb-cpp.c184
-rw-r--r--lwlib/xrdb.c70
6 files changed, 1147 insertions, 0 deletions
diff --git a/lwlib/ChangeLog b/lwlib/ChangeLog
new file mode 100644
index 0000000000..6bf25d6fbc
--- /dev/null
+++ b/lwlib/ChangeLog
@@ -0,0 +1,642 @@
+1999-07-12 Richard Stallman <rms@gnu.org>
+
+ * Version 20.4 released.
+
+1998-08-19 Richard Stallman <rms@psilocin.ai.mit.edu>
+
+ * Version 20.3 released.
+
+1998-07-30 Paul Eggert <eggert@twinsun.com>
+
+ * lwlib/Makefile.in (lwlib-utils.o, lwlib.o, lwlib-Xlw.o)
+ (lwlib-Xaw.o, lwlib-Xm.o, lwlib-Xol.o, lwlib-Xolmb.o):
+ Add dependencies to corresponding .c files. for Solaris 2.x VPATH make.
+
+1998-04-06 Andreas Schwab <schwab@gnu.org>
+
+ * lwlib.c: Always declare xmalloc.
+ [USE_XAW]: Include <X11/Xaw/Paned.h>.
+ (lwlib_memset, lwlib_bcopy): Explicitly declare return type.
+
+1997-12-20 Richard Stallman <rms@delysid.gnu.org>
+
+ * lwlib-Xm.c (update_one_menu_entry):
+ Add conditional in case XmNpositionIndex is missing.
+
+1997-12-20 Richard Stallman <rms@psilocin.gnu.org>
+
+ * lwlib-Xm.c (update_one_menu_entry):
+ Add conditional in case XmNpositionIndex is missing.
+
+1997-09-19 Richard Stallman <rms@psilocin.gnu.ai.mit.edu>
+
+ * Version 20.2 released.
+
+ * xlwmenu.c (motion_event_is_in_menu): Extend the left and
+ top windows by the shadow width.
+
+1997-09-15 Richard Stallman <rms@psilocin.gnu.ai.mit.edu>
+
+ * Version 20.1 released.
+
+1997-07-23 Richard Stallman <rms@psilocin.gnu.ai.mit.edu>
+
+ * xlwmenu.c (display_menu): If an item is disabled,
+ don't display its submenu (if any).
+
+1997-05-01 Richard Stallman <rms@psilocin.gnu.ai.mit.edu>
+
+ * xlwmenu.c (pop_up_menu): Update the call to x_catch_errors.
+
+1997-01-21 Richard Stallman <rms@psilocin.gnu.ai.mit.edu>
+
+ * xlwmenu.c (fit_to_screen): If new menu would overlap the previous
+ one from the side, try moving it up or down.
+
+1996-08-11 Richard Stallman <rms@psilocin.gnu.ai.mit.edu>
+
+ * Version 19.33 released.
+
+ * lwlib-Xm.c (update_one_menu_entry): Fix previous change:
+ When XmIsCascadeButton, don't call XmCreateCascadeButtonGadget,
+ just modify the existing one.
+
+1996-08-09 Marcus Daniels <marcus@sayre.sysc.pdx.edu>
+
+ * lwlib.c (merge_widget_value): Undo previous change.
+
+ * lwlib-Xm.c (update_one_menu_entry): When creating a pulldown
+ in an existing but empty menu item, in order to get a new functional
+ pulldown, the menu item must be switched from an XmPushButtonGadget
+ into a XmCascadeButtonGadget.
+
+1996-07-31 Richard Stallman <rms@psilocin.gnu.ai.mit.edu>
+
+ * Version 19.32 released.
+
+1996-07-31 Marcus Daniels <marcus@sayre.sysc.pdx.edu>
+
+ * lwlib-Xm.c (make_menubar): Turn off menu accelerator.
+
+1996-07-24 Marcus Daniels <marcus@sayre.sysc.pdx.edu>
+
+ * lwlib.c (merge_widget_value) [USE_MOTIF]: Pass along the change
+ flag from merged_contents.
+
+1996-07-13 Karl Heuer <kwzh@gnu.ai.mit.edu>
+
+ * lwlib-Xm.c (xm_update_menu): Fix loop termination test.
+
+1996-07-07 Karl Heuer <kwzh@gnu.ai.mit.edu>
+
+ * lwlib-Xm.h, lwlib-Xm.c, lwlib.h, lwlib.c: Undo previous change.
+
+1996-07-03 Marcus Daniels <marcus@sayre.sysc.pdx.edu>
+
+ * lwlib-Xm.h: Declare lw_motif_menu_related_event_p.
+
+ * lwlib-Xm.c (lw_motif_menu_related_event_p): A predicate to
+ identify keyboard events intended only for menus.
+
+ * lwlib.h: Declare lw_toolkit_related_event_p.
+
+ * lwlib.c (lw_toolkit_related_event_p): A predicate to identify
+ toolkit-specific events.
+
+1996-06-07 Marcus Daniels <marcus@sayre.sysc.pdx.edu>
+
+ * lwlib-Xm.c (make_menu_in_widget): Set mapping delay
+ for cascade buttons to zero.
+
+1996-05-25 Karl Heuer <kwzh@gnu.ai.mit.edu>
+
+ * Version 19.31 released.
+
+1996-03-31 Richard Stallman <rms@mole.gnu.ai.mit.edu>
+
+ * lwlib-Xm.c (destroy_all_children): When freeing a cascade button,
+ free its submenu too.
+ (make_menu_in_widget): Use a cascade button gadget, not a widget.
+ Include Xm/CascadeBG.h.
+
+1996-03-29 Richard Stallman <rms@mole.gnu.ai.mit.edu>
+
+ * Makefile.in (tags): New target.
+
+1996-03-28 Richard Stallman <rms@mole.gnu.ai.mit.edu>
+
+ * Makefile.in (TAGS): Renamed from `tags' and fixed to work.
+
+1996-03-26 Richard Stallman <rms@mole.gnu.ai.mit.edu>
+
+ * Makefile.in (xlwmenu.o): New explicit target.
+
+1996-03-24 Richard Stallman <rms@mole.gnu.ai.mit.edu>
+
+ * lwlib.h (struct widget_value): New field this_one_change.
+ * lwlib.c (merge_widget_value): Set the this_one_change field.
+ * lwlib-Xm.c (destroy_all_children): New arg first_child_to_destroy.
+ (make_menu_in_widget): New arg keep_first_children.
+ (xm_update_menu): Preserve the first children even if later ones
+ have a structural change.
+ (update_one_menu_entry): Use this_one_change field.
+
+1996-03-01 Richard Stallman <rms@mole.gnu.ai.mit.edu>
+
+ * xlwmenu.c (motion_event_is_in_menu): Make x and y signed.
+
+1996-02-25 Richard Stallman <rms@mole.gnu.ai.mit.edu>
+
+ * lwlib.c (lw_window_is_in_menubar) [USE_MOTIF]:
+ With Motif, the window WIN can be the menu bar widget itself.
+
+1996-02-21 Richard Stallman <rms@whiz-bang.gnu.ai.mit.edu>
+
+ * lwlib.c (free_widget_value_tree, merge_widget_value):
+ Use XtFree for the toolkit_data.
+
+1996-02-19 Karl Heuer <kwzh@gnu.ai.mit.edu>
+
+ * lwlib.c (lw_internal_update_other_instances): Move static var
+ outside the function, and rename it to lwlib_updating.
+
+1996-01-04 Paul Eggert <eggert@twinsun.com>
+
+ * lwlib.c (instantiate_widget_instance): Renamed from
+ instanciate_widget_instance (spelling correction).
+ All callers changed.
+
+1995-12-31 Richard Stallman <rms@mole.gnu.ai.mit.edu>
+
+ * xlwmenu.c (xlwMenuActionsList): Add "key" and "nothing".
+ (xlwMenuTranslations): Add translations for Key, KeyUp,
+ and for the modifier keysyms.
+ (Nothing, Key): New functions.
+
+1995-12-24 Richard Stallman <rms@mole.gnu.ai.mit.edu>
+
+ * xlwmenu.c (XlwMenuSetValues): Do redisplay if non-null contents
+ get replaced by empty contents.
+
+ * lwlib.c (merge_widget_value): Treat disappearance of entire contents
+ as a STRUCTURAL_CHANGE.
+
+1995-12-20 Richard Stallman <rms@whiz-bang.gnu.ai.mit.edu>
+
+ * lwlib-utils.c: Add #undef for index and rindex.
+
+1995-11-24 Richard Stallman <rms@mole.gnu.ai.mit.edu>
+
+ * Version 19.30 released.
+
+1995-11-13 Richard Stallman <rms@mole.gnu.ai.mit.edu>
+
+ * xlwmenu.c (display_menu_item): Fix previous change.
+
+1995-11-04 Richard Stallman <rms@whiz-bang.gnu.ai.mit.edu>
+
+ * xlwmenu.c (display_menu_item): Don't treat buttons specially.
+
+1995-08-14 Richard Stallman <rms@mole.gnu.ai.mit.edu>
+
+ * Makefile.in (RANLIB): Get this var from configure.
+
+1995-08-02 Richard Stallman <rms@mole.gnu.ai.mit.edu>
+
+ * lwlib.c (lw_popup_menu): New arg `event', passed along.
+ * lwlib-Xlw.c (xlw_popup_menu): New arg `event'.
+ * lwlib-Xm.c (xm_popup_menu): New arg `event'.
+
+1995-06-19 Richard Stallman <rms@mole.gnu.ai.mit.edu>
+
+ * Version 19.29 released.
+
+1995-06-11 Richard Stallman <rms@gnu.ai.mit.edu>
+
+ * lwlib.c (lwlib_toolkit_type): New variable.
+
+1995-05-26 Richard Stallman <rms@gnu.ai.mit.edu>
+
+ * xlwmenu.c (Drag): Do nothing unless menu.popped_up field is set.
+
+1995-05-22 Karl Heuer <kwzh@hal.gnu.ai.mit.edu>
+
+ * xlwmenu.c (XlwMenuInitialize): Cast XCreatePixmapFromBitmapData args.
+
+1995-05-20 Karl Heuer <kwzh@nutrimat.gnu.ai.mit.edu>
+
+ * lwlib.c: Don't use prototype.
+ * lwlib-Xm.c (activate_button, xm_update_cascadebutton): Likewise.
+
+1995-05-05 Richard Stallman <rms@mole.gnu.ai.mit.edu>
+
+ * lwlib.c (lw_refigure_widget) [USE_MOTIF]: Fix backward if.
+
+1995-05-04 Richard Stallman <rms@mole.gnu.ai.mit.edu>
+
+ * Makefile.in (ALL_CFLAGS): Add -I../src.
+
+1995-05-03 Morten Welinder <terra+@cs.cmu.edu>
+
+ * lwlib.c [__osf__]: Include string.h and stdlib.h.
+ [__osf__] (xmalloc): Declared.
+
+1995-04-13 Richard Stallman <rms@mole.gnu.ai.mit.edu>
+
+ * lwlib-Xm.c (update_one_menu_entry, make_menu_in_widget):
+ Specify more useful names in XmCreatePulldownMenu calls.
+
+ * lwlib-Xaw.c (xaw_pop_instance): Make x, y, w, h unsigned.
+
+ * xlwmenu.c (size_menu): Make height and label_width unsigned.
+ (fit_to_screen): Make screen_width and screen_height unsigned.
+ (motion_event_is_in_menu): Make x, y unsigned.
+
+1995-04-09 Richard Stallman <rms@mole.gnu.ai.mit.edu>
+
+ * lwlib-utils.c: If HAVE_CONFIG_H, include config.h.
+
+ * Makefile.in (ALL_CFLAGS): Define HAVE_CONFIG_H.
+ Add -I${srcdir}/../src.
+
+1995-04-08 Paul Reilly <pmr@geech.gnu.ai.mit.edu>
+
+ * lwlib-Xm.c: Remove function prototypes.
+ (xm_pop_down_callback): Call the deactivation callback only when
+ popping down the top level submenu.
+
+1995-04-07 Richard Stallman <rms@mole.gnu.ai.mit.edu>
+
+ * Makefile.in (lwlib.o): Depend on Makefile.
+
+ * lwlib-Xm.h: Remove function prototypes.
+
+ * lwlib-Xm.c (remove_grabs): Use type Widget for `menu'.
+
+1995-02-15 Paul Reilly <pmr@geech.gnu.ai.mit.edu>
+
+ * Makefile.in (ALL_CFLAGS): Allow include files to be found in
+ `srcdir'.
+
+1995-02-07 Richard Stallman <rms@pogo.gnu.ai.mit.edu>
+
+ * Makefile.in (maintainer-clean): Renamed from realclean.
+
+1994-11-28 Richard Stallman <rms@bethel>
+
+ * lwlib-int.h (safe_strdup): Don't use ANSI argument prototype.
+
+1994-11-15 Paul Reilly <pmr@duality.gnu.ai.mit.edu>
+
+ * lwlib.c (lw_refigure_widget): Use the macro USE_XAW rather than XAW.
+
+1994-11-08 Paul Reilly <pmr@duality.gnu.ai.mit.edu>
+
+ * lwlib-Xm.c (make_menu_in_widget): Differentiate a separator
+ entry ("--") from a title.
+ (xm_pop_down_callback): Filter all but the last pop down callbacks.
+
+1994-11-07 Paul Reilly <pmr@duality.gnu.ai.mit.edu>
+
+ * lwlib-Xm.c (update_one_menu_entry): Use the parent of the
+ cascade button as the parent of the pulldown, rather than the
+ cascade button itself. This works around a Motif SIGSEGV in the
+ function `InSharedMenuHierarchy'.
+
+1994-10-29 Richard Stallman <rms@duality.gnu.ai.mit.edu>
+
+ * xlwmenu.c (xlwmenu_default_font): New global variable.
+ (XlwMenuInitialize): Use xlwmenu_default_font to default
+ the font if necessary. Make mw, itself, an argument.
+
+1994-10-26 Richard Stallman <rms@duality.gnu.ai.mit.edu>
+
+ * xlwmenu.c (pop_up_menu): Pass a Display * to x_catch_errors, etc.
+
+1994-10-26 Richard Stallman <rms@mole.gnu.ai.mit.edu>
+
+ * xlwmenu.c (xlwmenu_default_font): New global variable.
+ (XlwMenuInitialize): Use xlwmenu_default_font to default
+ the font if necessary. Make mw, itself, an argument.
+
+ * xlwmenu.c (pop_up_menu): Pass a Display * to x_catch_errors, etc.
+
+1994-10-08 Richard Stallman <rms@mole.gnu.ai.mit.edu>
+
+ * xlwmenu.c (fit_to_screen): Don't put the menu off the left or top.
+
+1994-10-02 Paul Reilly <pmr@geech.gnu.ai.mit.edu>
+
+ * xlwmenu.c (display_menu_item): Add support for displaying the
+ title in pop up menus.
+
+ * lwlib.c (lw_set_main_areas): Use xm_set_main_areas().
+ (lw_manage_resizing): Use xm_manage_resizing() for Emacs/Motif.
+
+1994-09-25 Paul Reilly <pmr@geech.gnu.ai.mit.edu>
+
+ * lwlib-Xaw.c (xaw_create_main): New function to support the
+ toolkit independent creation of the main Emacs widget. *
+ lwlib-Xlw.c (xlw_create_menubar): When compiling under Emacs, set
+ resizing resources to disable showGrip and to enable both
+ resizeToPreferred and allowShellResize.
+
+ * lwlib-Xm.h: Declare xm_set_main_areas, xm_manage_resizing.
+
+ * lwlib-Xm.c: (make_menu_in_widget): Add support for displaying a
+ title in pop up menus.
+ (make_main, xm_set_main_areas, xm_manage_resizing): New functions to
+ create and manage a Motif Main Window widget.
+
+ * xlwmenu.c: Add #include <X11/ObjectP.h> for X11R4.
+
+1994-09-18 Fred Pierresteguy <F.Pierresteguy@frcl.bull.fr>
+
+ * lwlib-Xm.c (make_dialog): When there is more than two pushbuttons,
+ set XmPACK_TIGHT and XmHORIZONTAL to the rowcolumn. Also add a
+ margin of 10 pixels.
+
+1994-09-16 Paul Reilly <pmr@geech.gnu.ai.mit.edu>
+
+ * lwlib-Xm.c (make_main): New function to support toolkit
+ independent creation of the main Emacs widget.
+ (make_destroyed_instance): Use safe_strdup() instead of strdup().
+
+ * lwlib-int.h: Declare safe_strdup.
+
+ * lwlib.c (lw_refigure_widget): New function. Handle geometry
+ management inside lwlib instead of in Emacs.
+ (lw_window_is_in_menubar): New function. Determine if the pointer
+ is in a menubar.
+ (lw_set_main_areas): New function. Set the main window widgets for
+ Motif.
+
+ * lwlib.h: Declare lw_refigure_widget(), lw_window_is_in_menubar(),
+ lw_set_main_areas().
+
+ * xlwmenu.h: Define Xt{Ns,CS}howGrip, Xt{Nr,CR}esizeToPreferred, and
+ Xt{Na,CA}llowResize.
+
+ * xlwmenu.c (Start): Use pop_up_menu() to post the submenus.
+ (Select): Remove the pointer grab when popping down a menubar
+ submenu.
+ (pop_up_menu): Handle popping up submenus from a menubar, i.e. when
+ the menu widget parent is not a shell widget.
+
+1994-08-25 Richard Stallman <rms@mole.gnu.ai.mit.edu>
+
+ * xlwmenu.c (pop_up_menu): Clear next_release_must_exit.
+ (Start): Clear next_release_must_exit when popping up the menu.
+
+1994-08-24 Richard Stallman <rms@mole.gnu.ai.mit.edu>
+
+ * xlwmenu.c (Start): Set menu_post_event or next_release_must_exit.
+ (Select): Do nothing if the menu should be left posted.
+
+1994-07-28 Richard Stallman <rms@mole.gnu.ai.mit.edu>
+
+ * xlwmenu.c (make_windows_if_needed, pop_up_menu):
+ Enable mouse motion events even when no button down.
+
+1994-07-11 Richard Stallman (rms@mole.gnu.ai.mit.edu)
+
+ * xlwmenu.c (pointer_grabbed): New variable.
+ (pop_up_menu): Set the variable.
+ (XlwMenuDestroy): Maybe call XtUngrabPointer.
+
+1994-05-25 Richard Stallman (rms@mole.gnu.ai.mit.edu)
+
+ * lwlib.c (max): Function deleted. Define as macro instead,
+ but only if not already defined.
+
+1994-05-20 Richard Stallman (rms@mole.gnu.ai.mit.edu)
+
+ * xlwmenu.c (xlwMenuResources): Use XtRDimension for shadow thickness.
+
+1994-05-19 Richard Stallman (rms@mole.gnu.ai.mit.edu)
+
+ * lwlib-Xaw.c (xaw_pop_instance): Use XtSetValues, not XtMoveWidget.
+
+1994-05-16 Richard Stallman (rms@mole.gnu.ai.mit.edu)
+
+ * lwlib.c (lwlib_memset: New function, used instead of memset.
+ All callers changed.
+ * lwlib.c (lwlib_bcopy): New function.
+ * lwlib-utils.c (XtApplyToWidgets): Use lwlib_bcopy.
+
+ * lwlib.c: Delete definitions for use of alloca.
+ (name_to_widget): Use xmalloc, not alloca.
+
+1994-05-12 Richard Stallman (rms@mole.gnu.ai.mit.edu)
+
+ * xlwmenu.c (XlwMenuDestroy): Set new var submenu_destroyed.
+ (XlwMenuRedisplay): If it's set, truncate the old_depth to 1.
+
+1994-05-09 Richard Stallman (rms@mole.gnu.ai.mit.edu)
+
+ * xrdb-cpp.c: Don't include string.h, unistd.h, stdlib.h.
+ * lwlib-Xaw.c: Don't include string.h, unistd.h, stdlib.h.
+ * lwlib-utils.c (XtApplyToWidgets): Use bcopy, not memcpy.
+ * lwlib-utils.c: Don't include string.h, unistd.h, stdlib.h, memory.h.
+ * xlwmenu.c: Don't include string.h, unistd.h, stdlib.h.
+ * lwlib.c: Don't include string.h, unistd.h, stdlib.h.
+ (safe_strdup): No longer static.
+ * lwlib-Xm.c: Use safe_strdup, not strdup.
+
+ * xlwmenu.c (string_width): No longer static.
+
+1994-05-06 Richard Stallman (rms@mole.gnu.ai.mit.edu)
+
+ * xlwmenuP.h (struct _XlwMenu_part): Use Pixel and Cursor
+ for foreground and cursor_shape fields.
+
+ * xlwmenu.c (XlwMenuSetValues): Check for change of font.
+
+1994-04-28 Richard Stallman (rms@mole.gnu.ai.mit.edu)
+
+ * Makefile.in: Delete all SRCS variables (unused).
+ (lwlib.o, xrdb-cpp.o): Mention srcdir in dep.
+
+1994-04-15 Richard Stallman (rms@mole.gnu.ai.mit.edu)
+
+ * Makefile.in (ALL_CFLAGS): Don't define THIS_IS_X11R4.
+
+ * xrdb.c: Define HAVE_X11R5 as in xterm.h.
+ Include X11/Xlib.h, X11/cursorfont.h and X11/Xutil.h.
+ (_XtDisplayInitialize): Test HAVE_X11R5.
+
+ * dispatch.c: Define HAVE_X11R5 as in xterm.h.
+ Include X11/Xlib.h, X11/cursorfont.h and X11/Xutil.h.
+ (_XtConvertTypeToMask): Conditionalize on HAVE_X11R5.
+ (WouldDispatchEvent): Likewise.
+
+1994-04-12 Richard Stallman (rms@mole.gnu.ai.mit.edu)
+
+ * lwlib-Xaw.c (xaw_generic_callback): Declare without arg names.
+
+1994-04-01 Frederic Pierresteguy (fp@hal.gnu.ai.mit.edu)
+
+ * lwlib-Xaw.c (make_dialog): Don't allow any geometry request from the
+ user.
+
+1994-03-22 Frederic Pierresteguy (fp@mole.gnu.ai.mit.edu)
+
+ * xlwmenu.c (XlwMenuResize): Don't allow the popup menu to resize
+ itself. Therefore reset the size to its initial value.
+
+1994-03-19 Richard Stallman (rms@mole.gnu.ai.mit.edu)
+
+ * lwlib-Xaw.c (xaw_update_one_widget): Finish replacing XtVaSetValues.
+ Don't test for scrollbar widget.
+
+1994-03-14 Frederic Pierresteguy (fp@gnu.ai.mit.edu)
+
+ * lwlib-int.h: Declare lw_get_widget_info.
+
+ * lwlib.c (lw_get_widget_info): Comment out arg in function decl.
+
+ * lwlib-Xaw.h: Comment out args in function decls.
+ * lwlib-Xaw.c: Convert all function definitions to non-prototype K&R.
+ (xaw_update_one_widget - case dialogWidgetClass): Call XtSetValues,
+ not XtVaSetValues.
+
+1994-03-11 Frederic Pierresteguy (F.Pierresteguy@frcl.bull.fr)
+
+ * xlwmenu.c (display_menu_item): Modify parameters to draw_arrow to
+ right justify the arrow in the pane.
+
+ * lwlib.c: If not defined USE_MOTIF and defined USE_LUCID then
+ define USE_XAW.
+
+ * Makefile.in (LUCID_SRCS, LUCID_OBJS): Add the target lwlib-Xaw.[oc].
+
+ * lwlib.c, lwlib-int.h: Merged from Lucid 19.9 release.
+ * lwlib.c (_AIX): Replace the AIXV3 directive.
+ (USE_XAW): New macro to conditionalize the use of the athena toolkit.
+ (lw_get_widget_info): New function.
+ (set_one_value): Handle USE_XAW.
+ (instanciate_widget_instance): Likewise.
+ (destroy_one_instance): Likewise.
+ (lw_pop_all_widgets): Likewise.
+ (lw_pop_down_all_widgets): Likewise.
+ (get_one_value): Likewise.
+
+ * lwlib-Xaw.c, lwlib-Xaw.h: New files.
+
+1994-02-23 Richard Stallman (rms@mole.gnu.ai.mit.edu)
+
+ * xlwmenu.c (XlwMenuInitialize, XlwMenuDestroy): Undo previous changes.
+
+ * lwlib-Xlw.c (xlw_create_menubar, xlw_create_popup_menu):
+ Use XtCreate..., not XtVaCreate...
+ No need to copy instance->info->val any more.
+ (xlw_update_one_widget): Use XtSetValues, not XtVaSetValues.
+
+1994-02-21 Richard Stallman (rms@mole.gnu.ai.mit.edu)
+
+ * xlwmenu.c (pop_up_menu): Call XtUngrabPointer if XtGrabPointer fails.
+
+1994-02-19 Richard Stallman (rms@mole.gnu.ai.mit.edu)
+
+ * Makefile.in (xrdb-cpp.o, lwlib.o): Put ALL_CFLAGS after other flags.
+
+ * lwlib-Xlw.c (xlw_create_menubar): Don't call free_widget_value.
+ Use malloc for allocation.
+ (xlw_create_popup_menu): Likewise.
+
+1994-02-18 Frederic Pierresteguy (fp@mole.gnu.ai.mit.edu)
+
+ * lwlib.c (malloc_cpt): New static variable.
+ (malloc_widget_value): Increment malloc_cpt when allocating a cell.
+ (free_widget_value): Really free the cells when the number of
+ allocated ones is bigger than 25.
+
+ * lwlib-Xlw.c (xlw_create_menubar): Call malloc_widget_value and
+ free_widget_value instead of XtMalloc and XtFree.
+ (xlw_create_popup_menu): Likewise.
+
+1994-02-17 Richard Stallman (rms@mole.gnu.ai.mit.edu)
+
+ * Makefile.in (ALL_CFLAGS): Specify -Demacs.
+
+ * xlwmenu.c (pop_up_menu) [emacs]: Catch and ignore X protocol errors
+ in XtGrabPointer.
+
+1994-02-17 Frederic Pierresteguy (fp@mole.gnu.ai.mit.edu)
+
+ * lwlib-Xlw.c (xlw_create_popup_menu): Pass tem to
+ XtVaCreateManagedWidget, not instance->info->val.
+ (xlw_create_menubar): Likewise.
+
+1994-02-15 Frederic Pierresteguy (fp@mole.gnu.ai.mit.edu)
+
+ * lwlib-Xlw.c (xlw_create_popup_menu): Copy instance->info->val
+ before calling XtVaCreateManagedWidget and then free the copy.
+ (xlw_create_menubar): Likewise.
+
+1994-02-11 Richard Stallman (rms@mole.gnu.ai.mit.edu)
+
+ * xlwmenu.c (XlwMenuInitialize): Copy mw->menu.contents.
+ (XlwMenuDestroy): Free mw->menu.contents.
+
+1994-02-09 Frederic Pierresteguy (fp@mole.gnu.ai.mit.edu)
+
+ * xlwmenu.c (display_menu_item): Call draw_shadow_rectangle to make
+ visible/invisible the selection of the menubar items.
+
+1994-02-08 Roland McGrath (roland@churchy.gnu.ai.mit.edu)
+
+ * lwlib.c (strcasecmp): Renamed to my_strcasecmp.
+ (find_in_table): Changed only caller.
+
+1994-02-04 Frederic Pierresteguy (fp@mole.gnu.ai.mit.edu)
+
+ * xlwmenu.c (display_menu_item): When dealing with the menubar,
+ always call XDrawRectangle to clear the selection after popping down
+ the pulldown menu.
+
+1994-02-01 Richard Stallman (rms@mole.gnu.ai.mit.edu)
+
+ * lwlib.c: Include ctype.h.
+
+1994-01-31 Richard Stallman (rms@mole.gnu.ai.mit.edu)
+
+ * lwlib.c (strcasecmp): New function.
+
+1994-01-30 Richard Stallman (rms@mole.gnu.ai.mit.edu)
+
+ * xlwmenu.c, lwlib.c, lwlib-Xlw.c, lwlib-utils.c:
+ Convert all function definitions to non-prototype K&R.
+
+ * lwlib-Xlw.h: Comment out args in function decls.
+ * lwlib.h: Comment out args in function decls.
+ * lwlib-utils.h: Comment out args in function decls.
+
+1994-01-29 Richard Stallman (rms@mole.gnu.ai.mit.edu)
+
+ * lwlib.c: Include StringDefs.h after lwlib.h.
+
+1994-01-22 Roland McGrath (roland@churchy.gnu.ai.mit.edu)
+
+ * Makefile (xrdb-cpp.o, lwlib.o): Use $(srcdir) and file name
+ instead of $*.
+ (dispatch.o, xrdb.o, lwlib-Xm.o): Rules removed; they were
+ superfluous and didn't work when configured outside srcdir. The
+ implicit .c.o rule works fine.
+
+1994-01-21 Richard Stallman (rms@mole.gnu.ai.mit.edu)
+
+ * xlwmenu.c (resource_widget_value): Avoid using strdup.
+
+1994-01-18 Richard Stallman (rms@mole.gnu.ai.mit.edu)
+
+ * Makefile.in: New file.
+
+ * lwlib-Xolmb.c: Renamed from lwlib-Xol-mb.c.
+ * lwlib-Xolmb.h: Renamed from lwlib-Xol-mb.h.
+ * lwlib-XolmbP.h: Renamed from lwlib-Xol-mbP.h.
+
+ * lwlib-int.h: Renamed from lwlib-internal.h.
+
+
+
diff --git a/lwlib/Imakefile b/lwlib/Imakefile
new file mode 100644
index 0000000000..86f2bc15f8
--- /dev/null
+++ b/lwlib/Imakefile
@@ -0,0 +1,244 @@
+/**/# Imakefile file for liblw.a, Copyright (c) 1992-1993 Lucid, Inc.
+
+/*
+ * If you have Motif and want to provide support for Motif widgets in lwlib,
+ * then define USE_MOTIF.
+ *
+ * If you have OpenLook and want to provide support for OpenLook widgets in
+ * lwlib, then define USE_OLIT.
+ *
+ * Otherwise, define USE_LUCID to use Lucid's own Motif-lookalike widgets,
+ * which are included in this directory.
+ *
+ * You cannot define USE_MOTIF and USE_OLIT at the same time, but USE_LUCID
+ * may be defined along with either of the other two.
+ *
+ * The OLIT menubar is slow, and possibly buggy. We recommend against using
+ * it unless you'd like to try to improve it (which we encourage.)
+ *
+ * The Lucid menubar is much faster than the Motif menubar, but is missing
+ * a few features (most notably stay-up menus and keyboard traversal.) But
+ * since it has the Motif look-and-feel, we recommend using it even if you
+ * have Motif.
+ *
+ * Currently, only the Motif widgets provide support for dialog boxes. If
+ * you don't have Motif, you will not be able to pop up dialog boxes from
+ * emacs. If you define both USE_LUCID and USE_MOTIF, then the menus will
+ * be implemented with Lucid widgets, and the dialog boxes will be
+ * implemented with Motif widgets.
+ *
+ * It shouldn't take much work to add support for non-Motif dialog boxes;
+ * all that one need do is add code that implements Athena versions of the
+ * xm_create_dialog(), xm_update_one_widget(), and xm_update_one_value()
+ * routines in lwlib-Xm.c. If you do this, please send us the code.
+ *
+ * If you have your X11 source tree online, then you should define
+ * INCLUDE_EXTENSIONS to cause this library to contain some useful functions
+ * which Xt should provide but doesn't. You can only do this if you have
+ * the source tree online, because these functions require access to internal
+ * Xt data structures that are not defined in the exported header files.
+ * If you define INCLUDE_EXTENSIONS, then the variable $TOP must point at the
+ * root of the X11 source tree.
+ *
+ * To build a "shared" version of lwlib as well, define BUILD_SHARED_LIB.
+ * If INCLUDE_EXTENSIONS is defined, and you want to link with a dynamic
+ * version of Xt, it may be necessary to build a shared version of lwlib as
+ * well, as the X libraries sometimes put *different code* in the dynamic
+ * and shared versions of their libraries, for some reason I don't understand.
+ *
+ * Remember, if you build and install a shared version of lwlib, you may need
+ * to run ldconfig(8) before anything will realize that it exists.
+ *
+ * To compile with support for Lucid's Energize Programming System, you must
+ * define all of ENERGIZE, USE_LUCID, USE_MOTIF, and INCLUDE_EXTENSIONS.
+ */
+
+#define USE_LUCID
+/* #define USE_MOTIF */
+/* #define USE_OLIT */
+/* #define BUILD_SHARED_LIB */
+/* #define ENERGIZE */
+
+/* #define INCLUDE_EXTENSIONS */
+
+
+#ifdef INCLUDE_EXTENSIONS /* this is where it is at our site */
+ TOP = /$(WHICH_X)/mit
+#endif
+
+/*
+ *
+ * You shouldn't need to edit anything below this point.
+ *
+ */
+
+#ifdef ENERGIZE
+# if !defined(USE_LUCID) || !defined(USE_MOTIF) || !defined(INCLUDE_EXTENSIONS)
+ERROR! Energize requires Lucid widgets, Motif, and X Extensions.
+# endif
+#endif /* ENERGIZE */
+
+
+#ifdef BUILD_SHARED_LIB
+SOLWREV=1.0
+#endif
+
+#if (ProjectX == 4)
+ STD_DEFINES = LibraryDefines
+ CDEBUGFLAGS = LibraryCDebugFlags
+ EXT_DEFINES = -DTHIS_IS_X11R4
+ WHICH_X = x11r4
+#define SpecialLibObjectRule SpecialObjectRule
+#else /* !4 */
+#if (ProjectX == 5)
+#ifdef BUILD_SHARED_LIB
+# define DoSharedLib YES
+# define DoNormalLib YES
+#endif
+#include <Library.tmpl>
+ EXT_DEFINES = -DTHIS_IS_X11R5 -DINCLUDE_ALLOCA_H
+ WHICH_X = x11r5
+#else /* !5 */
+ EXT_DEFINES = "ERROR! Imakefile was unable to determine whether this is X11r4 or X11r5."
+#endif /* !5 */
+#endif /* !4 */
+
+ LUCID_SRCS = lwlib-Xlw.c xlwmenu.c
+ LUCID_OBJS = lwlib-Xlw.o xlwmenu.o
+ MOTIF_SRCS = lwlib-Xm.c
+ MOTIF_OBJS = lwlib-Xm.o
+ OLIT_SRCS = lwlib-Xol.c lwlib-Xol-mb.c
+ OLIT_OBJS = lwlib-Xol.o lwlib-Xol-mb.o
+
+#ifdef INCLUDE_EXTENSIONS
+ EXT_SRCS = dispatch.c xrdb-cpp.c xrdb.c
+ EXT_OBJS = dispatch.o xrdb-cpp.o xrdb.o
+#endif
+
+#if (defined(USE_MOTIF) && defined(USE_OLIT))
+TOOLKIT_DEFINES = "ERROR! You cannot define both USE_MOTIF and USE_OLIT at the same time (in Imakefile)."
+#else
+# if (defined(USE_MOTIF) && defined(USE_LUCID))
+TOOLKIT_DEFINES = -DUSE_MOTIF -DUSE_LUCID
+ TOOLKIT_SRCS = $(MOTIF_SRC) $(LUCID_SRCS)
+ TOOLKIT_OBJS = $(MOTIF_OBJS) $(LUCID_OBJS)
+# else
+# if (defined(USE_OLIT) && defined(USE_LUCID))
+ DEFINES = -DUSE_OLIT -DUSE_LUCID
+ TOOLKIT_SRCS = $(OLIT_SRC) $(LUCID_SRCS)
+ TOOLKIT_OBJS = $(OLIT_OBJS) $(LUCID_OBJS)
+# else
+# if defined(USE_OLIT)
+TOOLKIT_DEFINES = -DUSE_OLIT
+ TOOLKIT_SRCS = $(OLIT_SRC)
+ TOOLKIT_OBJS = $(OLIT_OBJS)
+# else
+# if defined(USE_MOTIF)
+TOOLKIT_DEFINES = -DUSE_MOTIF
+ TOOLKIT_SRCS = $(MOTIF_SRC)
+ TOOLKIT_OBJS = $(MOTIF_OBJS)
+# else
+# if defined(USE_LUCID)
+TOOLKIT_DEFINES = -DUSE_LUCID
+ TOOLKIT_SRCS = $(LUCID_SRC)
+ TOOLKIT_OBJS = $(LUCID_OBJS)
+# else
+TOOLKIT_DEFINES = "ERROR! At least one of USE_MOTIF, USE_LUCID or USE_OLIT must be defined in Imakefile."
+# endif
+# endif
+# endif
+# endif
+# endif
+#endif
+
+#ifdef ENERGIZE
+# ifndef USE_MOTIF
+ EZ_OBJS = "ERROR! ENERGIZE requires USE_MOTIF to be defined in Imakefile."
+# else
+ EZ_OBJS = energize/blpsheet.o energize/build.o energize/classbr_ps.o \
+ energize/ctreebr_ps.o energize/debuggerps.o \
+ energize/editmode.o energize/leb_psheet.o \
+ energize/projectdisp.o energize/projectps.o \
+ energize/search.o energize/target.o
+ ENERGIZEP = -DENERGIZE
+# endif
+#endif
+
+ SRCS = lwlib.c $(TOOLKIT_SRCS) lwlib-utils.c $(EXT_SRCS)
+ OBJS = lwlib.o $(TOOLKIT_OBJS) lwlib-utils.o $(EXT_OBJS) $(EZ_OBJS)
+ EXT_FLAGS = -I$(TOOLKITSRC) $(EXT_DEFINES)
+ LIBNAME = liblw.a
+
+
+#if defined(ENERGIZE) && defined(BUILD_SHARED_LIB)
+all::
+ @if [ ! -d shared ]; then mkdir shared; else exit 0; fi
+ @if [ ! -d energize/shared ]; then mkdir energize/shared; \
+ else exit 0; fi
+ @if [ ! -h shared/energize ]; \
+ then cd shared ; ln -s ../energize/shared energize ; \
+ else exit 0; fi
+
+clean::
+ $(RM) shared/energize
+#endif
+
+
+#ifdef BUILD_SHARED_LIB
+# if (ProjectX == 4)
+SharedLibraryObjectRule ()
+NormalSharedLibraryTarget(lw,$(SOLWREV),$(OBJS))
+# else /* X != 4 */
+LibraryObjectRule ()
+SharedLibraryTarget(lw,$(SOLWREV),$(OBJS),shared,..)
+# endif /* X != 4 */
+#else /* !BUILD_SHARED_LIB */
+NormalLibraryObjectRule ()
+#endif /* !BUILD_SHARED_LIB */
+
+NormalLibraryTarget (lw,$(OBJS))
+MakefileSubdirs (energize)
+DependTarget ()
+
+#ifdef ENERGIZE
+
+energize/Imakefile:
+ -mkdir energize
+ -(cd energize ; sh -c "ln -s ../$(VPATH)/energize/* .")
+
+/* #### we should automatically edit BUILD_SHARED_LIB into/out of the energize
+ Imakefile, since that's the only thing down there that changes */
+energize/Makefile: energize/Imakefile Imakefile
+ $(MAKE) $(MFLAGS) Makefiles
+
+Makefile::
+ $(RM) energize/Makefile
+
+$(EZ_OBJS): energize/Makefile
+ ${RM} $@ ; cd energize ; $(MAKE) $(MFLAGS) CC="$(CC)" CFLAGS="$(CFLAGS)"
+
+clean::
+ cd energize ; $(MAKE) $(MFLAGS) clean
+
+#endif
+
+#if defined(BUILD_SHARED_LIB) && (ProjectX == 4)
+# define LWObjectRule SpecialSharedObjectRule
+#else
+# define LWObjectRule SpecialLibObjectRule
+#endif
+
+CPPDEFS=-DCPP_PROGRAM=\"CppCmd\"
+
+LWObjectRule (lwlib.o, lwlib.c, $(TOOLKIT_DEFINES))
+LWObjectRule (dispatch.o, dispatch.c, $(EXT_FLAGS))
+LWObjectRule (xrdb-cpp.o, xrdb-cpp.c, $(EXT_FLAGS) "$(CPPDEFS)")
+LWObjectRule (xrdb.o, xrdb.c, $(EXT_FLAGS))
+LWObjectRule (lwlib-Xm.o, lwlib-Xm.c, $(ENERGIZEP))
+
+lwlib-utils.o: lwlib-utils.h
+lwlib.o: lwlib.h lwlib-internal.h
+lwlib-Xlw.o: lwlib.h lwlib-internal.h
+lwlib-Xm.o: lwlib.h lwlib-internal.h lwlib-utils.h
+lwlib-Xol.o: lwlib.h lwlib-internal.h
+lwlib-Xol-mb.o: lwlib-Xol-mb.h lwlib-Xol-mbP.h
diff --git a/lwlib/README b/lwlib/README
new file mode 100644
index 0000000000..cb0b6ebd37
--- /dev/null
+++ b/lwlib/README
@@ -0,0 +1,5 @@
+This subdirectory contains the lwlib library which provides a uniform
+interface to a few different X toolkits. The library was written by Lucid.
+This version has changes in the makefile to fit in with Emacs's configure
+script, and some source files have been renamed to fit in 14 characters.
+
diff --git a/lwlib/dispatch.h b/lwlib/dispatch.h
new file mode 100644
index 0000000000..175284508f
--- /dev/null
+++ b/lwlib/dispatch.h
@@ -0,0 +1,2 @@
+
+Widget XtWidgetToDispatchTo (XEvent *);
diff --git a/lwlib/xrdb-cpp.c b/lwlib/xrdb-cpp.c
new file mode 100644
index 0000000000..4ede12e765
--- /dev/null
+++ b/lwlib/xrdb-cpp.c
@@ -0,0 +1,184 @@
+/* A general interface to the widgets of different toolkits.
+ Copyright (C) 1992, 1993 Lucid, Inc.
+
+This file is part of the Lucid Widget Library.
+
+The Lucid Widget Library is free software; you can redistribute it and/or
+modify it under the terms of the GNU General Public License as published by
+the Free Software Foundation; either version 2, or (at your option)
+any later version.
+
+The Lucid Widget Library is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+GNU General Public License for more details.
+
+You should have received a copy of the GNU General Public License
+along with GNU Emacs; see the file COPYING. If not, write to
+the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
+Boston, MA 02111-1307, USA. */
+
+/* This code reads a resource database file and filters it through cpp
+ with the same set of preprocessor defines that `xrdb' uses.
+ Call lwlib_xrdb_initialize(dpy) once, and then call the function
+ lwlib_GetFileDatabase() instead of XrmGetFileDatabase(),
+ and lwlib_CombineFileDatabase() instead of XrmCombineFileDatabase().
+ */
+
+#ifndef __STDC_EXTENDED__
+#define __STDC_EXTENDED__
+#endif
+
+#include <stdio.h>
+#include <ctype.h>
+#include <X11/Xlib.h>
+#include <X11/Xos.h>
+#include <X11/Intrinsic.h>
+#include <X11/Xmu/SysUtil.h>
+#include <sys/stat.h>
+
+extern char *index ();
+
+static int
+file_p (path)
+ char *path;
+{
+ struct stat status;
+
+ return (access (path, R_OK) == 0 /* exists and is readable */
+ && stat (path, &status) == 0 /* get the status */
+ && (status.st_mode & S_IFDIR) == 0); /* not a directory */
+}
+
+#ifndef CPP_PROGRAM
+#define CPP_PROGRAM "/lib/cpp"
+#endif
+
+static char cpp_string [BUFSIZ];
+static char *cpp_file = 0;
+
+#define Resolution(pixels, mm) ((((pixels) * 100000 / (mm)) + 50) / 100)
+
+void
+lwlib_xrdb_initialize (display)
+ Display *display;
+{
+ Screen *screen;
+ Visual *visual;
+ char server [255];
+ char *colon, *s;
+
+#define Push(str) \
+ (strncpy (s, str, sizeof(str)), s += (sizeof(str)-1))
+
+#define Print(str, thing) \
+ (sprintf (s, str, thing), s = index (s, 0))
+
+ s = cpp_string;
+ Push (CPP_PROGRAM);
+
+ Push (" -DCLIENTHOST=");
+ XmuGetHostname (s, sizeof (cpp_string) - (s - cpp_string));
+ s = index (s, 0);
+ Push (" -DSERVERHOST=");
+ strcpy (s, XDisplayName (DisplayString (display)));
+ colon = index (s, ':');
+ if (colon == s)
+ {
+ XmuGetHostname (s, sizeof (cpp_string) - (s - cpp_string));
+ s = index (s, 0);
+ }
+ else if (colon)
+ s = colon;
+ else
+ s = index (s, 0);
+
+ Print (" -DVERSION=%d", ProtocolVersion(display));
+ Print (" -DREVISION=%d", ProtocolRevision(display));
+ Print (" -DVENDOR=\"%s\"", ServerVendor(display));
+ Print (" -DRELEASE=%d", VendorRelease(display));
+ screen = DefaultScreenOfDisplay(display);
+ visual = DefaultVisualOfScreen(screen);
+ Print (" -DWIDTH=%d", screen->width);
+ Print (" -DHEIGHT=%d", screen->height);
+ Print (" -DX_RESOLUTION=%d", Resolution(screen->width,screen->mwidth));
+ Print (" -DY_RESOLUTION=%d", Resolution(screen->height,screen->mheight));
+ Print (" -DPLANES=%d", DisplayPlanes(display, DefaultScreen(display)));
+ Print (" -DBITS_PER_RGB=%d", visual->bits_per_rgb);
+ switch(visual->class) {
+ case StaticGray: Print (" -DCLASS=%s", "StaticGray"); break;
+ case GrayScale: Print (" -DCLASS=%s", "GrayScale"); break;
+ case StaticColor: Print (" -DCLASS=%s", "StaticColor");
+ Print (" -DCOLOR", 0); break;
+ case PseudoColor: Print (" -DCLASS=%s", "PseudoColor");
+ Print (" -DCOLOR", 0); break;
+ case TrueColor: Print (" -DCLASS=%s", "TrueColor");
+ Print (" -DCOLOR", 0); break;
+ case DirectColor: Print (" -DCLASS=%s", "DirectColor");
+ Print (" -DCOLOR", 0); break;
+ default:
+ fprintf (stderr, "unexpected visual class=%d\n", visual->class);
+ exit (-1);
+ }
+ *s++ = ' ';
+ *s = 0;
+ cpp_file = s;
+}
+
+XrmDatabase
+lwlib_GetFileDatabase (path)
+ char *path;
+{
+ XrmDatabase db = 0;
+ char line [BUFSIZ];
+ char *s;
+ FILE *file;
+
+ if (! file_p (path))
+ return 0;
+
+ strcpy (cpp_file, path);
+ if (! (file = popen (cpp_string, "r")))
+ {
+ fprintf (stderr,
+ "couldn't execute %s; resource file %s file not munged.\n",
+ CPP_PROGRAM, path);
+ return XrmGetFileDatabase (path);
+ }
+ while (s = fgets (line, sizeof (line), file))
+ {
+ char ch, *tail;
+ if (*s == '!') continue;
+ for (; ((ch = *s) != '\n') && isspace(ch); s++);
+ if ((ch == '\0') || (ch == '\n') || (ch == '#')) continue;
+ tail = s + strlen (s);
+ if (tail - s < 3) continue; /* this would be syntactically incorrect */
+ while (*(tail-1) == '\n' && /* handle \ at end of line */
+ *(tail-2) == '\\')
+ {
+ if (! fgets (tail, sizeof (line) - (tail - line), file))
+ continue;
+ tail += strlen (tail);
+ }
+ XrmPutLineResource (&db, s);
+ }
+ pclose (file);
+ return db;
+}
+
+#ifdef THIS_IS_X11R5
+
+int
+lwlib_CombineFileDatabase (path, target_db, override)
+ char *path;
+ XrmDatabase *target_db;
+ Bool override;
+{
+ XrmDatabase source_db = lwlib_GetFileDatabase (path);
+ if (! source_db)
+ return (! file_p (path));
+ XrmCombineDatabase (source_db, target_db, override);
+ return 1;
+}
+
+#endif /* r5 */
diff --git a/lwlib/xrdb.c b/lwlib/xrdb.c
new file mode 100644
index 0000000000..e922a60342
--- /dev/null
+++ b/lwlib/xrdb.c
@@ -0,0 +1,70 @@
+/* This file overrides the R4 or R5 mit/lib/Xt/Initialize.c, except that
+ the functions lwlib_GetFileDatabase(), lwlib_CombineFileDatabase(), and
+ lwlib_xrdb_initialize() are called. By doing this silly cpp hack, we
+ avoid version skew problems.
+ */
+
+#include <X11/Xlib.h>
+#include <X11/cursorfont.h>
+#include <X11/Xutil.h>
+
+#ifdef XlibSpecificationRelease
+#if XlibSpecificationRelease >= 5
+#define HAVE_X11R5
+#endif
+#endif
+
+extern struct _XrmHashBucketRec *lwlib_GetFileDatabase ();
+extern void lwlib_xrdb_initialize ();
+
+/* Replace all calls to XrmGetFileDatabase() with lwlib_GetFileDatabase(),
+ calls to XrmCombineFileDatabase() with lwlib_CombineFileDatabase(), and
+ rename the defined _XtDisplayInitialize() function.
+ */
+#define XrmGetFileDatabase lwlib_GetFileDatabase
+#define XrmCombineFileDatabase lwlib_CombineFileDatabase
+#define _XtDisplayInitialize _orig_XtDisplayInitialize
+
+/* Suck in the original code. Don't change this: see comments in Imakefile. */
+#include "Initialize.c"
+
+#undef XrmGetFileDatabase
+#undef XrmCombineFileDatabase
+#undef _XtDisplayInitialize
+
+/* Now provide a definition of _XtDisplayInitialize() which invokes the
+ original code after calling our initialization hook. Note that the R4
+ and R5 versions of _XtDisplayInitialize() take different arguments.
+ */
+
+#ifndef HAVE_X11R5
+
+void _XtDisplayInitialize(dpy, pd, name, class, urlist, num_urs, argc, argv)
+ Display *dpy;
+ XtPerDisplay pd;
+ String name, class;
+ XrmOptionDescRec *urlist;
+ Cardinal num_urs;
+ Cardinal *argc;
+ char *argv[];
+{
+ lwlib_xrdb_initialize(dpy);
+ _orig_XtDisplayInitialize(dpy, pd, name, class, urlist, num_urs, argc, argv);
+}
+
+#else /* HAVE_X11R5 */
+
+void _XtDisplayInitialize(dpy, pd, name, urlist, num_urs, argc, argv)
+ Display *dpy;
+ XtPerDisplay pd;
+ String name;
+ XrmOptionDescRec *urlist;
+ Cardinal num_urs;
+ int *argc;
+ char **argv;
+{
+ lwlib_xrdb_initialize(dpy);
+ _orig_XtDisplayInitialize(dpy, pd, name, urlist, num_urs, argc, argv);
+}
+
+#endif /* HAVE_X11R5 */