mirror of
https://git.savannah.gnu.org/git/emacs.git
synced 2025-01-22 18:35:09 +00:00
#
This commit is contained in:
parent
8cc3881faf
commit
a08cb76c5a
642
lwlib/ChangeLog
Normal file
642
lwlib/ChangeLog
Normal file
@ -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.
|
||||
|
||||
|
||||
|
244
lwlib/Imakefile
Normal file
244
lwlib/Imakefile
Normal file
@ -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
|
5
lwlib/README
Normal file
5
lwlib/README
Normal file
@ -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.
|
||||
|
2
lwlib/dispatch.h
Normal file
2
lwlib/dispatch.h
Normal file
@ -0,0 +1,2 @@
|
||||
|
||||
Widget XtWidgetToDispatchTo (XEvent *);
|
184
lwlib/xrdb-cpp.c
Normal file
184
lwlib/xrdb-cpp.c
Normal file
@ -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 */
|
70
lwlib/xrdb.c
Normal file
70
lwlib/xrdb.c
Normal file
@ -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 */
|
Loading…
Reference in New Issue
Block a user