xfig-3.2.4-4 stable port information

Package: xfig
Version: 3.2.4
Revision: 4
BuildDepends: libjpeg (>= 6b-3), libpng3, libtiff, xaw3d (>= 1.5-11), x11-dev, fink (>= 0.24.12), xmkmf (>= 1.0.2-3)
Depends: x11, xaw3d-shlibs (>= 1.5-11), libjpeg-bin, app-defaults, x-ghostscript-fonts, transfig (>= 3.2.4-5)
Source: http://www.xfig.org/xfigdist/%n.%v.full.tar.gz
Source-MD5: 1911fc0f733cb2f40336a8d0e82513de
SourceDirectory: %n.%v
# keeping this as %f.info so that a copy can be easily kept in unstable
PatchFile: %f.patch
PatchFile-MD5: 10df5d60e8a916395697b1fd8af49622
PatchScript: <<
sed 's|@FINKPREFIX@|%p|g' < %{PatchFile} | patch -p1
<<
#PatchScript: <<
# rm Doc/xfig._man
# (cd Doc; ln -s xfig.man xfig._man)
#<<
CompileScript: <<
#!/bin/sh -ev
export PATH=%p/lib/xmkmf/bin:$PATH
export IMAKEINCLUDE=-I%p/lib/X11/config
xmkmf
make PREFIX=%p
<<
InstallScript: <<
#!/bin/sh -ev
export PATH=%p/lib/xmkmf/bin:$PATH
export IMAKEINCLUDE=-I%p/lib/X11/config
make install PREFIX=%p DESTDIR=%d
make install.all PREFIX=%p DESTDIR=%d MANDIR=%p/share/man/man1 DOCDIR=%p/share/doc/xfig
rm -Rf %d/usr
rm -Rf %d/etc
<<
DocFiles: CHANGES FIGAPPS LATEX.AND.XFIG README
License: BSD
Description: Menu-driven tool to create graphical objects
DescPort: <<
Patch for the updated xaw3d library provided by the author of that update
at http://www.visi.com/~hawkeyd/xaw3d.html
<<
DescPackaging: <<
XFIGLIBDIR was set to %p/share/xfig. Looks in /etc/printcap
for printer descriptions, which may not be correct for darwin or OS X.
Also, "make install" creates some empty directories in the /usr and /etc
trees so we remove them.
<<
DescUsage: <<
The environment variable XAPPLRESDIR must point to
/sw/etc/app-defaults when using this package. (This happens by default
if /sw/bin/init.* is sourced, thanks to the app-defaults package.) The
user can also specify "*customization: -color" in the .Xdefaults or
.Xresources file, to take advantage of the color support which was
compiled in.
<<
Homepage: http://www.xfig.org/
Maintainer: Dave Morrison







xfig-3.2.4-4 stable port .patch

diff -ruN xfig.3.2.4/Imakefile xfig.3.2.4-patched/Imakefile
--- xfig.3.2.4/Imakefile Thu Dec 19 12:57:11 2002
+++ xfig.3.2.4-patched/Imakefile Sun Apr 3 17:32:09 2005
@@ -41,15 +41,15 @@
XCOMM different tree than the "correct" tree that your X system expects. The usual
XCOMM purpose of DESTDIR is to test an install process by installing in a benign area.

-XCOMM BINDIR = /usr/bin/X11
-XCOMM MKDIRHIER = /bin/sh /usr/bin/X11/mkdirhier
-XCOMM XAPPLOADDIR = /home/user/xfig
+BINDIR = $(PREFIX)/bin
+MKDIRHIER = /bin/sh @FINKPREFIX@/lib/xmkmf/bin/mkdirhier
+XAPPLOADDIR = $(PREFIX)/etc/app-defaults

XCOMM Redefine the following if your PNG library and/or include file
XCOMM are in different places

-PNGLIBDIR = $(USRLIBDIR)
-PNGINC = -I/usr/local/include
+PNGLIBDIR = $(PREFIX)/lib
+PNGINC = -I$(PREFIX)/include

XCOMM If don't want JPEG support, comment out the #define USEJPEG line
XCOMM Uncomment the #define for USEJPEG if you want to be able to import
@@ -68,8 +68,8 @@

#ifdef USEJPEG
#ifdef USEINSTALLEDJPEG
-JPEGLIBDIR = /usr/local/lib
-JPEGINC = -I/usr/include/X11
+JPEGLIBDIR = $(PREFIX)/lib
+JPEGINCDIR = $(PREFIX)/include
#else
JPEGLIBDIR = ../jpeg
JPEGINC = -I$(JPEGLIBDIR)
@@ -87,12 +87,12 @@
XCOMM Change XPMLIBDIR if necessary to point to the xpm library (libXpm)
XCOMM Change XPMINC if necessary to point to the include file for xpm (xpm.h)

-XCOMM #define USEXPM
-XCOMM #define USEXPM_ICON
+#define USEXPM
+#define USEXPM_ICON

#ifdef USEXPM
-XPMLIBDIR = $(USRLIBDIR)
-XPMINC = -I/usr/include/X11
+XPMLIBDIR = /usr/X11R6/lib
+XPMINC = -I/usr/X11R6/include/X11
#endif

XCOMM Uncomment the following definiton if you want to use the small icons
@@ -105,12 +105,15 @@
XCOMM Then be sure to change the XAW3DINC to point to the directory where your
XCOMM 3D Athena widget headers are located

-XCOMM #define XAW3D
+#define XAW3D

#ifdef XAW3D
-XAW3DINC = -I/usr/include/X11/Xaw3d
+XAW3DINC = -I/usr/X11R6/include/X11/Xaw3d
DUSEXAW3D = -DXAW3D
XAWLIB = -lXaw3d
+#else
+XAW_SRC = w_menuentry.c SmeCascade.c SmeBSB.c SimpleMenu.c
+XAW_OBJ = w_menuentry.o SmeCascade.o SmeBSB.o SimpleMenu.o
#endif

XCOMM Uncomment the following if you have a wheel mouse. See docs for description.
@@ -159,14 +162,14 @@
XCOMM use (and change) the following if you want the multi-key data base file
XCOMM somewhere other than the standard X11 library directory
XCOMM be sure to comment out the second copy of XFIGLIBDIR if you use this one
-XCOMM XFIGLIBDIR = /usr/local/lib/xfig
+XFIGLIBDIR = $(PREFIX)/share/xfig

XCOMM use this if you want the multi-key data base file in the standard X11 tree
-XFIGLIBDIR = $(LIBDIR)/xfig
+XCOMM XFIGLIBDIR = $(LIBDIR)/xfig

XCOMM XFIGDOCDIR tells where the html and pdf documentation should go
-XCOMM XFIGDOCDIR = $(DOCDIR)/xfig
-XFIGDOCDIR = /usr/share/doc/xfig
+XFIGDOCDIR = $(PREFIX)/share/doc/xfig
+XCOMM XFIGDOCDIR = /usr/share/doc/xfig

XCOMM MANDIR tells where the standard man pages should go (no need to change it
XCOMM if you want the man pages installed in the standard place on your system
@@ -299,12 +302,12 @@
u_elastic.c u_error.c u_fonts.c u_free.c u_geom.c \
u_list.c u_markers.c u_pan.c u_print.c u_redraw.c u_scale.c u_search.c \
u_smartsearch.c u_translate.c u_undo.c w_digitize.c w_listwidget.c \
- w_browse.c w_capture.c w_srchrepl.c w_help.c w_layers.c w_menuentry.c \
+ w_browse.c w_capture.c w_srchrepl.c w_help.c w_layers.c \
w_canvas.c w_cmdpanel.c w_color.c w_cursor.c w_dir.c w_drawprim.c \
w_export.c w_file.c w_fontbits.c w_fontpanel.c w_grid.c w_icons.c \
w_indpanel.c w_library.c w_modepanel.c w_mousefun.c w_msgpanel.c \
w_print.c w_rottext.c w_rulers.c w_setup.c w_style.c w_util.c w_zoom.c \
- $(I18N_SRC) SmeCascade.c SmeBSB.c SimpleMenu.c
+ $(I18N_SRC) $(XAW_SRC)

XFIGOBJ = d_arc.o d_arcbox.o d_box.o d_ellipse.o d_picobj.o \
d_subspline.o d_line.o d_regpoly.o d_spline.o d_text.o \
@@ -321,12 +324,12 @@
u_elastic.o u_error.o u_fonts.o u_free.o u_geom.o \
u_list.o u_markers.o u_pan.o u_print.o u_redraw.o u_scale.o u_search.o \
u_smartsearch.o u_translate.o u_undo.o w_digitize.o w_listwidget.o \
- w_browse.o w_capture.o w_srchrepl.o w_help.o w_layers.o w_menuentry.o \
+ w_browse.o w_capture.o w_srchrepl.o w_help.o w_layers.o \
w_canvas.o w_cmdpanel.o w_color.o w_cursor.o w_dir.o w_drawprim.o \
w_export.o w_file.o w_fontbits.o w_fontpanel.o w_grid.o w_icons.o \
w_indpanel.o w_library.o w_modepanel.o w_mousefun.o w_msgpanel.o \
w_print.o w_rottext.o w_rulers.o w_setup.o w_style.o w_util.o w_zoom.o \
- $(I18N_OBJ) SmeCascade.o SmeBSB.o SimpleMenu.o
+ $(I18N_OBJ) $(XAW_OBJ)

XCOMM Other dependencies should be handled by "make depend"

@@ -541,11 +544,13 @@
SpecialObjectRule(w_grid.o, w_grid.c mode.h, )
SpecialObjectRule(w_indpanel.o, w_indpanel.c mode.h w_indpanel.h object.h, )
SpecialObjectRule(w_library.o, w_library.c mode.h, )
-SpecialObjectRule(w_menuentry.o, w_menuentry.c w_menuentry.h w_menuentryP.h, )
SpecialObjectRule(w_modepanel.o, w_modepanel.c mode.h w_indpanel.h w_icons.h object.h, $(DUSESMALLICONS))
SpecialObjectRule(w_msgpanel.o, w_msgpanel.c mode.h, )
SpecialObjectRule(w_rulers.o, w_rulers.c mode.h, )
SpecialObjectRule(w_zoom.o, w_zoom.c mode.h, )
+#ifndef XAW3D
+SpecialObjectRule(w_menuentry.o, w_menuentry.c w_menuentry.h w_menuentryP.h, )
+#endif

#ifdef USEJPEG
#ifndef USEINSTALLEDJPEG
diff -ruN xfig.3.2.4/figx.h xfig.3.2.4-patched/figx.h
--- xfig.3.2.4/figx.h Fri Sep 20 17:00:53 2002
+++ xfig.3.2.4-patched/figx.h Sun Apr 3 17:31:53 2005
@@ -36,6 +36,7 @@
#include
#include
#include
+#include
#include
#include
#include
diff -ruN xfig.3.2.4/w_cmdpanel.c xfig.3.2.4-patched/w_cmdpanel.c
--- xfig.3.2.4/w_cmdpanel.c Thu Dec 19 12:51:19 2002
+++ xfig.3.2.4-patched/w_cmdpanel.c Sun Apr 3 17:31:53 2005
@@ -37,7 +37,6 @@
#include "w_icons.h"
#include "w_indpanel.h"
#include "w_layers.h"
-#include "w_menuentry.h"
#include "w_msgpanel.h"
#include "w_mousefun.h"
#include "w_print.h"
@@ -46,6 +45,9 @@
#include "w_setup.h"
#include "w_style.h"
#include "w_zoom.h"
+#ifndef XAW3D
+#include "w_menuentry.h"
+#endif
#ifdef I18N
#include "d_text.h"
#endif /* I18N */
@@ -59,6 +61,15 @@
Widget global_popup = 0;
Widget global_panel;

+#define menu_item_bitmap_width 9
+#define menu_item_bitmap_height 8
+static unsigned char menu_item_bitmap_bits[] = {
+ 0x00, 0x01, 0x80, 0x01, 0xc0, 0x00, 0x60, 0x00,
+ 0x31, 0x00, 0x1b, 0x00, 0x0e, 0x00, 0x04, 0x00
+};
+
+static Pixmap menu_item_bitmap = None;
+
/* Widgets holding the ascii values for the string-based settings */

Widget bal_delay;
@@ -90,6 +101,13 @@
static int off_paste_x,off_paste_y;
static int orig_paste_x,orig_paste_y;

+#ifdef XAW3D
+extern update_indpanel();
+extern update_modepanel();
+extern update_layerpanel();
+extern update_mousepanel();
+extern update_rulerpanel();
+#else
/* popup message over command button when mouse enters it */
static void cmd_balloon_trigger();
static void cmd_unballoon();
@@ -97,6 +115,7 @@
/* popup message over filename window when mouse enters it */
static void filename_balloon_trigger();
static void filename_unballoon();
+#endif

String global_translations =
"WM_PROTOCOLS: DismissGlobal()\n";
@@ -143,29 +162,28 @@
{NULL, 0, NULL},
};

-#define PAGE_BRD_MSG "page borders (Meta-B)"
+#define PAGE_BRD_MSG "page borders (Meta-B)"
#define DPTH_MGR_MSG "depth manager"
-#define INFO_BAL_MSG "info balloons (Meta-Y)"
-#define LINE_LEN_MSG "line lengths (Meta-L)"
-#define VRTX_NUM_MSG "vertex numbers "
+#define INFO_BAL_MSG "info balloons (Meta-Y)"
+#define LINE_LEN_MSG "line lengths (Meta-L)"
+#define VRTX_NUM_MSG "vertex numbers"

menu_def view_menu_items[] = {
- {"Manage Styles... (Ctrl-Y)", 7, popup_manage_style_panel},
- {"Redraw (Ctrl-L)", 0, redisplay_canvas},
- {"Portrait/Landscape (Meta-C)", 3, change_orient},
- {"Zoom In (Shift-Z)", 5, inc_zoom},
- {"Zoom Out (z)", 5, dec_zoom},
- {"Zoom to Fit canvas (Ctrl-Z)", 8, fit_zoom},
- {"Unzoom", 0, unzoom},
- {"Pan to origin", 0, pan_origin},
- {"-", 0, NULL}, /* make a dividing line */
+ {"Manage Styles... (Ctrl-Y)", 7, popup_manage_style_panel},
+ {"Redraw (Ctrl-L)", 0, redisplay_canvas},
+ {"Portrait/Landscape (Meta-C)", 3, change_orient},
+ {"Zoom In (Shift-Z)", 5, inc_zoom},
+ {"Zoom Out (z)", 5, dec_zoom},
+ {"Zoom to Fit canvas (Ctrl-Z)", 8, fit_zoom},
+ {"Unzoom", 0, unzoom},
+ {"Pan to origin", 0, pan_origin},
+ {"-", 0, NULL}, /* make a dividing line */
/* the following menu labels will be refreshed in refresh_view_menu() */
- /* 2 must be added to the underline value because of the "* " preceding the text */
- {PAGE_BRD_MSG, 12, toggle_show_borders},
- {DPTH_MGR_MSG, 7, toggle_show_depths},
- {INFO_BAL_MSG, 8, toggle_show_balloons},
- {LINE_LEN_MSG, 12, toggle_show_lengths},
- {VRTX_NUM_MSG, 7, toggle_show_vertexnums},
+ {PAGE_BRD_MSG, 10, toggle_show_borders},
+ {DPTH_MGR_MSG, 5, toggle_show_depths},
+ {INFO_BAL_MSG, 6, toggle_show_balloons},
+ {LINE_LEN_MSG, 5, toggle_show_lengths},
+ {VRTX_NUM_MSG, 5, toggle_show_vertexnums},
{NULL, 0, NULL},
};

@@ -241,11 +259,13 @@
NextArg(XtNborderWidth, INTERNAL_BW);
name_panel = XtCreateManagedWidget("file_name", labelWidgetClass, tool,
Args, ArgCount);
+#ifndef XAW3D
/* popup balloon when mouse passes over filename */
XtAddEventHandler(name_panel, EnterWindowMask, False,
filename_balloon_trigger, (XtPointer) name_panel);
XtAddEventHandler(name_panel, LeaveWindowMask, False,
filename_unballoon, (XtPointer) name_panel);
+#endif
/* add actions to position the menus if the user uses an accelerator */
XtAppAddActions(tool_app, menu_actions, XtNumber(menu_actions));
refresh_view_menu();
@@ -276,12 +296,14 @@

/* now the menu itself */
menu->menuwidget = create_menu_item(menu);
-
+
+#ifndef XAW3D
/* popup when mouse passes over button */
XtAddEventHandler(menu->widget, EnterWindowMask, False,
cmd_balloon_trigger, (XtPointer) menu);
XtAddEventHandler(menu->widget, LeaveWindowMask, False,
cmd_unballoon, (XtPointer) menu);
+#endif

return menu->widget;
}
@@ -304,7 +326,11 @@
sprintf(id, "%1d", j + 1);
FirstArg(XtNvertSpace, 10);
NextArg(XtNunderline, 0); /* underline # digit */
+#ifndef XAW3D
entry = XtCreateWidget(id, figSmeBSBObjectClass, menu, Args, ArgCount);
+#else
+ entry = XtCreateWidget(id, smeBSBObjectClass, menu, Args, ArgCount);
+#endif
XtAddCallback(entry, XtNcallback, load_recent_file, (XtPointer) my_strdup(id));
if (j < max_recent_files)
XtManageChild(entry);
@@ -354,8 +380,13 @@
/* normal menu entry */
FirstArg(XtNvertSpace, 10);
NextArg(XtNunderline, menup->menu[i].u_line); /* any underline */
+#ifndef XAW3D
entry = XtCreateManagedWidget(menup->menu[i].name, figSmeBSBObjectClass,
menu, Args, ArgCount);
+#else
+ entry = XtCreateManagedWidget(menup->menu[i].name, smeBSBObjectClass,
+ menu, Args, ArgCount);
+#endif
XtAddCallback(entry, XtNcallback, menup->menu[i].func,
(XtPointer) menup->widget);
}
@@ -381,6 +412,7 @@
}
}

+#ifndef XAW3D
/* come here when the mouse passes over a button in the command panel */

static Widget cmd_balloon_popup = (Widget) 0;
@@ -466,6 +498,7 @@
cmd_balloon_popup = (Widget) 0;
}
}
+#endif

static void
enter_cmd_but(widget, closure, event, continue_to_dispatch)
@@ -1229,7 +1262,7 @@
strcpy(cur_pdfviewer, panel_get_value(pdfview));

XtPopdown(global_popup);
-
+
refresh_view_menu();
}

@@ -1242,6 +1275,7 @@
global_popup = (Widget) 0;
}

+#ifndef XAW3D
/* come here when the mouse passes over the filename window */

static Widget filename_balloon_popup = (Widget) 0;
@@ -1313,6 +1347,7 @@
filename_balloon_popup = (Widget) 0;
}
}
+#endif

/*
* Update the current filename in the name_panel widget, and the xfig icon.
@@ -1459,6 +1494,7 @@
Boolean state;
{
Widget menu, w;
+ Pixmap bitmap;
char name[60];
DeclareStaticArgs(10);

@@ -1471,25 +1507,36 @@
if (w == NULL) {
fprintf(stderr, "xfig: can't find \"viewmenu%s\"\n", name);
} else {
- if (state)
- sprintf(name, "Don't show %s", label);
- else
- sprintf(name, "Show %s", label);
- if (state)
- sprintf(name, "* Show %s", label);
- else
- sprintf(name, " Show %s", label);
+ sprintf(name, "Show %s", label);
FirstArg(XtNlabel, name);
+ if (state) {
+ if (menu_item_bitmap == None)
+ menu_item_bitmap = XCreateBitmapFromData(XtDisplay(menu),
+ RootWindowOfScreen(XtScreen(menu)),
+ (char *)menu_item_bitmap_bits,
+ menu_item_bitmap_width,
+ menu_item_bitmap_height);
+ bitmap = menu_item_bitmap;
+ } else
+ bitmap = None;
+ NextArg(XtNleftBitmap, bitmap);
+ NextArg(XtNleftMargin, menu_item_bitmap_width + 4);
SetValues(w);
}
}
}

-/* update the menu entries with or without an asterisk */
+/* update the menu entries with or without a checkmark,
+ and set or clear all Tip widgets */

void
refresh_view_menu()
{
+#ifdef XAW3D
+ int i;
+ register main_menu_info *menu;
+#endif
+
/* turn off Compose key LED */
setCompLED(0);

@@ -1498,4 +1545,25 @@
refresh_view_menu_item(INFO_BAL_MSG, appres.showballoons);
refresh_view_menu_item(LINE_LEN_MSG, appres.showlengths);
refresh_view_menu_item(VRTX_NUM_MSG, appres.shownums);
+
+#ifdef XAW3D
+ if (appres.showballoons) {
+ XawTipEnable(name_panel, "Current filename");
+ for (i = 0; i < NUM_CMD_MENUS; ++i) {
+ menu = &main_menus[i];
+ XawTipEnable(menu->widget, menu->hint);
+ }
+ } else {
+ XawTipDisable(name_panel);
+ for (i = 0; i < NUM_CMD_MENUS; ++i) {
+ menu = &main_menus[i];
+ XawTipDisable(menu->widget);
+ }
+ }
+ update_indpanel(cur_indmask);
+ update_modepanel();
+ update_layerpanel();
+ update_mousepanel();
+ update_rulerpanel();
+#endif
}
diff -ruN xfig.3.2.4/w_indpanel.c xfig.3.2.4-patched/w_indpanel.c
--- xfig.3.2.4/w_indpanel.c Fri Oct 18 19:05:41 2002
+++ xfig.3.2.4-patched/w_indpanel.c Sun Apr 3 17:31:53 2005
@@ -60,9 +60,11 @@

#define MAX_ARROWSIZE 3 /* maximum value for cur_arrowsizeshown */

+#ifndef XAW3D
/* popup message over button when mouse enters it */
static void ind_balloon_trigger();
static void ind_unballoon();
+#endif

/***** value panel set translations *****/
static String set_translations =
@@ -471,7 +473,7 @@
0x3f, 0x02, 0x7f, 0x02, 0xff, 0x02, 0xff, 0x03};

/* create a ind_sw_info struct for the update widget
- so we can use the balloon routines */
+ so we can use the balloon routines or the Tip widget */

static ind_sw_info upd_sw_info, upd_set_sw_info, upd_clr_sw_info, upd_tog_sw_info;

@@ -506,10 +508,12 @@
strcpy(upd_sw_info.line1,"Selects which settings are updated");
upd_sw_info.line2[0] = '\0';
upd_sw_info.sw_width = 70; /* rough guess */
+#ifndef XAW3D
XtAddEventHandler(upd_ctrl, EnterWindowMask, False,
ind_balloon_trigger, (XtPointer) &upd_sw_info);
XtAddEventHandler(upd_ctrl, LeaveWindowMask, False,
ind_unballoon, (XtPointer) &upd_sw_info);
+#endif

FirstArg(XtNborderWidth, 0);
NextArg(XtNjustify, XtJustifyCenter);
@@ -518,11 +522,12 @@
NextArg(XtNinternalHeight, 0);
upd_ctrl_lab = XtCreateManagedWidget("upd_ctrl_label", labelWidgetClass,
upd_ctrl, Args, ArgCount);
-
+#ifndef XAW3D
XtAddEventHandler(upd_ctrl_lab, EnterWindowMask, False,
ind_balloon_trigger, (XtPointer) &upd_sw_info);
XtAddEventHandler(upd_ctrl_lab, LeaveWindowMask, False,
ind_unballoon, (XtPointer) &upd_sw_info);
+#endif

FirstArg(XtNdefaultDistance, 0);
NextArg(XtNborderWidth, 0);
@@ -545,10 +550,12 @@
strcpy(upd_set_sw_info.line1,"Sets all update flags");
upd_set_sw_info.line2[0] = '\0';
upd_set_sw_info.sw_width = UPD_BITS+6;
+#ifndef XAW3D
XtAddEventHandler(set_upd, EnterWindowMask, False,
ind_balloon_trigger, (XtPointer) &upd_set_sw_info);
XtAddEventHandler(set_upd, LeaveWindowMask, False,
ind_unballoon, (XtPointer) &upd_set_sw_info);
+#endif

clr_upd = XtCreateManagedWidget("clr_upd", commandWidgetClass,
upd_ctrl_btns, Args, ArgCount);
@@ -558,10 +565,12 @@
strcpy(upd_clr_sw_info.line1,"Clears all update flags");
upd_clr_sw_info.line2[0] = '\0';
upd_clr_sw_info.sw_width = UPD_BITS+6;
+#ifndef XAW3D
XtAddEventHandler(clr_upd, EnterWindowMask, False,
ind_balloon_trigger, (XtPointer) &upd_clr_sw_info);
XtAddEventHandler(clr_upd, LeaveWindowMask, False,
ind_unballoon, (XtPointer) &upd_clr_sw_info);
+#endif

tog_upd = XtCreateManagedWidget("tog_upd", commandWidgetClass,
upd_ctrl_btns, Args, ArgCount);
@@ -571,10 +580,12 @@
strcpy(upd_tog_sw_info.line1,"Toggles all update flags");
upd_tog_sw_info.line2[0] = '\0';
upd_tog_sw_info.sw_width = UPD_BITS+6;
+#ifndef XAW3D
XtAddEventHandler(tog_upd, EnterWindowMask, False,
ind_balloon_trigger, (XtPointer) &upd_tog_sw_info);
XtAddEventHandler(tog_upd, LeaveWindowMask, False,
ind_unballoon, (XtPointer) &upd_tog_sw_info);
+#endif

/* start with all components affected by update */
cur_updatemask = I_UPDATEMASK;
@@ -669,11 +680,13 @@
/* (callbacks pass same data for ANY button) */
XtAddEventHandler(sw->button, ButtonReleaseMask, False,
sel_ind_but, (XtPointer) sw);
+#ifndef XAW3D
/* popup when mouse passes over button */
XtAddEventHandler(sw->button, EnterWindowMask, False,
ind_balloon_trigger, (XtPointer) sw);
XtAddEventHandler(sw->button, LeaveWindowMask, False,
ind_unballoon, (XtPointer) sw);
+#endif
XtOverrideTranslations(sw->button,
XtParseTranslationTable(ind_translations));
}
@@ -898,6 +911,7 @@

}

+#ifndef XAW3D
/* come here when the mouse passes over a button in the indicator panel */

static Widget ind_balloon_popup = (Widget) 0;
@@ -980,6 +994,7 @@
ind_balloon_popup = (Widget) 0;
}
}
+#endif

generate_choice_pixmaps(isw)
ind_sw_info *isw;
@@ -1002,13 +1017,62 @@
update_indpanel(mask)
unsigned long mask;
{
+#ifdef XAW3D
+ char msg[60];
+#endif
register int i;
register ind_sw_info *isw;

+ /*
+ * We must test for the widgets, as this is called by
+ * w_cmdpanel.c:refresh_view_menu().
+ */
+
+#ifdef XAW3D
+ if (upd_ctrl)
+ if (appres.showballoons)
+ XawTipEnable(upd_ctrl, upd_sw_info.line1);
+ else
+ XawTipDisable(upd_ctrl);
+ if (upd_ctrl_lab)
+ if (appres.showballoons)
+ XawTipEnable(upd_ctrl_lab, upd_sw_info.line1);
+ else
+ XawTipDisable(upd_ctrl_lab);
+ if (set_upd)
+ if (appres.showballoons)
+ XawTipEnable(set_upd, upd_set_sw_info.line1);
+ else
+ XawTipDisable(set_upd);
+ if (clr_upd)
+ if (appres.showballoons)
+ XawTipEnable(clr_upd, upd_clr_sw_info.line1);
+ else
+ XawTipDisable(clr_upd);
+ if (tog_upd)
+ if (appres.showballoons)
+ XawTipEnable(tog_upd, upd_tog_sw_info.line1);
+ else
+ XawTipDisable(tog_upd);
+ for (isw = ind_switches, i = 0; i < NUM_IND_SW; isw++, i++) {
+ if (!isw->button)
+ continue;
+ if (appres.showballoons) {
+ sprintf(msg, "%s", isw->line1);
+ if (strlen(isw->line2))
+ sprintf(msg + strlen(msg), " %s", isw->line2);
+ XawTipEnable(isw->button, msg);
+ } else
+ XawTipDisable(isw->button);
+ }
+#endif
+
/* only update current mask if user wants to see relevant ind buttons */
if (appres.ShowAllButtons)
return;

+ if (!ind_box)
+ return;
cur_indmask = mask;
XtUnmanageChild(ind_box);
for (isw = ind_switches, i = 0; i < NUM_IND_SW; isw++, i++) {
@@ -1034,9 +1098,11 @@
XButtonEvent xbutton;
ind_sw_info *isw = (ind_sw_info *) closure;

+#ifndef XAW3D
/* since this command popups a window, destroy the balloon popup now. */
ind_unballoon((Widget) 0, (XtPointer) 0, (XEvent*) 0, (Boolean*) 0);
app_flush();
+#endif

xbutton = event->xbutton;
#ifdef WHEELMOUSE
diff -ruN xfig.3.2.4/w_layers.c xfig.3.2.4-patched/w_layers.c
--- xfig.3.2.4/w_layers.c Tue Nov 5 14:38:18 2002
+++ xfig.3.2.4-patched/w_layers.c Sun Apr 3 17:31:53 2005
@@ -63,9 +63,11 @@
static XtCallbackProc switch_layer_mode();
static XtActionProc layer_exposed();

+#ifndef XAW3D
/* popup message over command button when mouse enters it */
static void layer_balloon_trigger();
static void layer_unballoon();
+#endif

static void draw_layer_button();
static void draw_layer_buttons();
@@ -144,11 +146,13 @@
below = all_active_but = XtCreateManagedWidget("all_active", commandWidgetClass,
layer_form, Args, ArgCount);
XtAddCallback(below, XtNcallback, (XtCallbackProc)all_active, (XtPointer) NULL);
+#ifndef XAW3D
/* popup when mouse passes over button */
XtAddEventHandler(below, EnterWindowMask, False,
layer_balloon_trigger, (XtPointer) "Display all depths");
XtAddEventHandler(below, LeaveWindowMask, False,
layer_unballoon, (XtPointer) NULL);
+#endif

FirstArg(XtNlabel, "All Off");
NextArg(XtNfromVert, below);
@@ -159,11 +163,13 @@
below = all_inactive_but = XtCreateManagedWidget("all_inactive", commandWidgetClass,
layer_form, Args, ArgCount);
XtAddCallback(below, XtNcallback, (XtCallbackProc)all_inactive, (XtPointer) NULL);
+#ifndef XAW3D
/* popup when mouse passes over button */
XtAddEventHandler(below, EnterWindowMask, False,
layer_balloon_trigger, (XtPointer) "Hide all depths");
XtAddEventHandler(below, LeaveWindowMask, False,
layer_unballoon, (XtPointer) NULL);
+#endif

FirstArg(XtNlabel, "Toggle ");
NextArg(XtNfromVert, below);
@@ -174,11 +180,13 @@
below = toggle_all_but = XtCreateManagedWidget("toggle_all", commandWidgetClass,
layer_form, Args, ArgCount);
XtAddCallback(below, XtNcallback, (XtCallbackProc)toggle_all, (XtPointer) NULL);
+#ifndef XAW3D
/* popup when mouse passes over button */
XtAddEventHandler(below, EnterWindowMask, False,
layer_balloon_trigger, (XtPointer) "Toggle displayed/hidden depths");
XtAddEventHandler(below, LeaveWindowMask, False,
layer_unballoon, (XtPointer) NULL);
+#endif

/* radio buttons to switch between graying out inactive layers or blanking altogether */

@@ -286,12 +294,13 @@
NextArg(XtNright, XtChainRight);
layer_viewp = XtCreateManagedWidget("layer_viewp", viewportWidgetClass,
layer_viewform, Args, ArgCount);
+#ifndef XAW3D
/* popup when mouse passes over button */
-
XtAddEventHandler(layer_viewp, EnterWindowMask, False,
layer_balloon_trigger, (XtPointer) "Display or hide any depth");
XtAddEventHandler(layer_viewp, LeaveWindowMask, False,
layer_unballoon, (XtPointer) NULL);
+#endif
XtAddEventHandler(layer_viewp, StructureNotifyMask, False,
update_layers, (XtPointer) NULL);

@@ -321,6 +330,9 @@
XtOverrideTranslations(layer_canvas,
XtParseTranslationTable(layer_translations));

+#ifdef XAW3D
+ update_layerpanel();
+#endif
}

/* now that the mouse function and indicator panels have been sized
@@ -728,6 +740,36 @@
return False;
}

+#ifdef XAW3D
+update_layerpanel()
+{
+ /*
+ * We must test for the widgets, as this is called by
+ * w_cmdpanel.c:refresh_view_menu().
+ */
+
+ if (all_active_but)
+ if (appres.showballoons)
+ XawTipEnable(all_active_but, "Display all depths");
+ else
+ XawTipDisable(all_active_but);
+ if (all_inactive_but)
+ if (appres.showballoons)
+ XawTipEnable(all_inactive_but, "Hide all depths");
+ else
+ XawTipDisable(all_inactive_but);
+ if (toggle_all_but)
+ if (appres.showballoons)
+ XawTipEnable(toggle_all_but, "Toggle displayed/hidden depths");
+ else
+ XawTipDisable(toggle_all_but);
+ if (layer_viewp)
+ if (appres.showballoons)
+ XawTipEnable(layer_viewp, "Display or hide any depth");
+ else
+ XawTipDisable(layer_viewp);
+}
+#else
static Widget layer_balloon_popup = (Widget) 0;
static XtIntervalId balloon_id = (XtIntervalId) 0;
static Widget balloon_w;
@@ -831,6 +873,7 @@
layer_balloon_popup = (Widget) 0;
}
}
+#endif

/* map/unmap the depth manager on the right side */

diff -ruN xfig.3.2.4/w_library.c xfig.3.2.4-patched/w_library.c
--- xfig.3.2.4/w_library.c Mon Nov 11 12:58:48 2002
+++ xfig.3.2.4-patched/w_library.c Sun Apr 3 17:31:53 2005
@@ -40,7 +40,9 @@
#include "w_setup.h"
#include "w_icons.h"
#include "w_zoom.h"
+#ifndef XAW3D
#include "SmeCascade.h"
+#endif

#ifdef HAVE_NO_DIRENT
#include
@@ -73,7 +75,10 @@
static Widget library_popup=0;
static Widget put_cur_obj;
static Widget library_form, title;
-static Widget lib_obj_label, library_label, library_menu, library_menu_button;
+static Widget lib_obj_label, library_label, library_menu_button;
+#ifndef XAW3D
+static Widget library_menu;
+#endif
static Widget sel_view_button;
static Widget object_form;
static Widget icon_form, icon_viewport, icon_box;
@@ -272,8 +277,10 @@
Dimension lwidth, lheight;
Dimension lawidth, laheight;

+#ifndef XAW3D
/* pop down the menu */
XtPopdown(library_menu);
+#endif

/* if already in the middle of loading a library, return */
if (loading_library) {
@@ -629,8 +636,8 @@
menuButtonWidgetClass,
library_form, Args, ArgCount);
/* make the menu and attach it to the button */
- (void) make_library_menu(library_menu_button,
- library_rec, num_library_names);
+ (void) make_library_menu(library_menu_button, "menu",
+ library_rec, num_library_names);

if (!actions_added) {
XtAppAddActions(tool_app, library_actions, XtNumber(library_actions));
@@ -1000,20 +1007,27 @@
XtInstallAccelerators(library_form, cancel);
}

+#ifndef XAW3D
extern void popdown_subs();
+#endif

static Widget
-make_library_menu(parent, librec, num)
+make_library_menu(parent, name, librec, num)
Widget parent;
+ char *name;
struct lib_rec *librec[];
int num;
{
- Widget menu, entry, submenu;
- char name[200];
+ Widget menu, entry;
+#ifndef XAW3D
+ Widget submenu;
+#endif
+ char menu_name[200];
int i;

- menu = XtCreatePopupShell("menu", simpleMenuWidgetClass,
- parent, NULL, ZERO);
+ menu = XtCreatePopupShell(name, simpleMenuWidgetClass,
+ parent, NULL, ZERO);
+#ifndef XAW3D
/* if this is the toplevel menu, add a callback to popdown any submenus if
the user releases the pointer button outside a submenu */
if (XtIsSubclass(parent, menuButtonWidgetClass)) {
@@ -1021,29 +1035,54 @@
library_menu = menu;
XtAddCallback(menu, XtNpopdownCallback, popdown_subs, (XtPointer) NULL);
}
-
+#endif
+
for (i = 0; i < num; i++) {
- /* add one blank in front and after name to allow space for diamond and/or arrow */
- sprintf(name," %s ",librec[i]->name);
+#ifndef XAW3D
+ sprintf(menu_name, " %s ", librec[i]->name);
+#else
+ sprintf(menu_name, "%sMenu", librec[i]->name);
+#endif
if (librec[i]->nsubs) {
- submenu = make_library_menu(menu, librec[i]->subdirs,
- librec[i]->nsubs);
+#ifndef XAW3D
+ submenu = make_library_menu(menu, menu_name, librec[i]->subdirs,
+ librec[i]->nsubs);
FirstArg(XtNsubMenu, submenu);
- NextArg(XtNrightBitmap, menu_cascade_arrow); /* use arrow to indicate cascade */
- NextArg(XtNrightMargin, 9); /* room to the right of the arrow */
+ NextArg(XtNrightMargin, 9);
+#else
+ FirstArg(XtNmenuName, XtNewString(menu_name));
+#endif
+ NextArg(XtNrightBitmap, menu_cascade_arrow);
if (librec[i]->figs_at_top) {
- NextArg(XtNselectCascade, True); /* if there are fig files, make the */
- NextArg(XtNleftBitmap, diamond_pixmap); /* cascade selectable and add a bitmap */
- } /* in the left bitmap of the BSB */
- entry = XtCreateManagedWidget(name, smeCascadeObjectClass, menu,
- Args, ArgCount);
- /* if there are fig files at this level, make the dir name selectable */
+#ifndef XAW3D
+ NextArg(XtNselectCascade, True);
+#endif
+ NextArg(XtNleftBitmap, diamond_pixmap);
+ }
+#ifndef XAW3D
+ entry = XtCreateManagedWidget(menu_name, smeCascadeObjectClass,
+ menu, Args, ArgCount);
+#else
+ entry = XtCreateManagedWidget(librec[i]->name, smeBSBObjectClass,
+ menu, Args, ArgCount);
+#endif
if (librec[i]->figs_at_top)
- XtAddCallback(entry, XtNcallback, load_library, (XtPointer) librec[i]);
+ XtAddCallback(entry, XtNcallback, load_library,
+ (XtPointer) librec[i]);
+#ifdef XAW3D
+ (void) make_library_menu(menu, menu_name, librec[i]->subdirs,
+ librec[i]->nsubs);
+#endif
} else {
- entry = XtCreateManagedWidget(name, smeCascadeObjectClass, menu,
- NULL, ZERO);
- XtAddCallback(entry, XtNcallback, load_library, (XtPointer) librec[i]);
+#ifndef XAW3D
+ entry = XtCreateManagedWidget(menu_name, smeCascadeObjectClass,
+ menu, NULL, ZERO);
+#else
+ entry = XtCreateManagedWidget(librec[i]->name, smeBSBObjectClass,
+ menu, NULL, ZERO);
+#endif
+ XtAddCallback(entry, XtNcallback, load_library,
+ (XtPointer) librec[i]);
}
}
return menu;
diff -ruN xfig.3.2.4/w_modepanel.c xfig.3.2.4-patched/w_modepanel.c
--- xfig.3.2.4/w_modepanel.c Mon Sep 16 17:11:35 2002
+++ xfig.3.2.4-patched/w_modepanel.c Sun Apr 3 17:31:53 2005
@@ -132,9 +132,11 @@
/* button selection event handler */
static void sel_mode_but();

+#ifndef XAW3D
/* popup message over button when mouse enters it */
static void mode_balloon_trigger();
static void mode_unballoon();
+#endif

/* popdown message */
static void turn_on();
@@ -414,14 +416,21 @@
/* left button changes mode */
XtAddEventHandler(sw->widget, ButtonPressMask, False,
sel_mode_but, (XtPointer) sw);
+#ifndef XAW3D
/* popup when mouse passes over button */
XtAddEventHandler(sw->widget, EnterWindowMask, False,
mode_balloon_trigger, (XtPointer) sw);
XtAddEventHandler(sw->widget, LeaveWindowMask, False,
mode_unballoon, (XtPointer) sw);
+#endif
XtOverrideTranslations(sw->widget,
XtParseTranslationTable(mode_translations));
}
+
+#ifdef XAW3D
+ update_modepanel();
+#endif
+
return;
}

@@ -467,6 +476,28 @@
SetValues(mode_panel);
}

+#ifdef XAW3D
+update_modepanel()
+{
+ register int i;
+ register mode_sw_info *sw;
+
+ /*
+ * We must test for the widgets, as this is called by
+ * w_cmdpanel.c:refresh_view_menu().
+ */
+
+ for (i = 0; i < NUM_MODE_SW; ++i) {
+ sw = &mode_switches[i];
+ if (!sw->widget)
+ continue;
+ if (appres.showballoons) {
+ XawTipEnable(sw->widget, sw->modemsg);
+ } else
+ XawTipDisable(sw->widget);
+ }
+}
+#else
/* come here when the mouse passes over a button in the mode panel */

static Widget mode_balloon_popup = (Widget) 0;
@@ -557,6 +588,7 @@
mode_balloon_popup = (Widget) 0;
}
}
+#endif

/* come here when a button is pressed in the mode panel */

@@ -585,45 +617,46 @@
else if (highlighting)
erase_objecthighlight();

+#ifndef XAW3D
/* if this command popups a window, destroy the balloon popup now. See the
note above about this above the command panel definition. */
if (msw->popup) {
mode_unballoon((Widget) 0, (XtPointer) 0, (XEvent*) 0, (Boolean*) 0);
}
app_flush();
+#endif

if (xbutton.button == Button1) { /* left button */
turn_off_current();
turn_on(msw);
- if (msw->mode == F_UPDATE) { /* map the set/clr/toggle button for update */
+
+ update_indpanel(0); /* first remove ind buttons */
+ XtUnmanageChild(ind_panel);
+ if (msw->mode != F_UPDATE)
+ XtUnmanageChild(upd_ctrl);
+ FirstArg(XtNwidth, 1); /* force a resize to update scrollbar */
+ SetValues(ind_panel);
+ if (msw->mode == F_UPDATE) {
if (cur_mode != F_UPDATE) {
- update_indpanel(0); /* first remove ind buttons */
- XtUnmanageChild(ind_panel);
+ /* map the set/clr/toggle button for update */
XtManageChild(upd_ctrl);
- /* get the width of the update control panel */
- /* now put the ind_panel to our right */
- FirstArg(XtNfromHoriz, upd_ctrl);
- NextArg(XtNwidth, INDPANEL_WD-UPD_CTRL_WD-2*INTERNAL_BW); /* resize it */
- SetValues(ind_panel);
- XtManageChild(ind_panel);
- update_indpanel(msw->indmask); /* now manage the relevant buttons */
}
- } else { /* turn off the update boxes if not in update mode */
- if (cur_mode == F_UPDATE) { /* if previous mode is update and current */
- update_indpanel(0); /* is not, first remove ind buttons */
+ /* set the adjacent widget and width */
+ FirstArg(XtNfromHoriz, upd_ctrl);
+ NextArg(XtNwidth, INDPANEL_WD-UPD_CTRL_WD-2*INTERNAL_BW);
+ } else {
+ if (cur_mode == F_UPDATE) {
+ /* unmap the set/clr/toggle button for update */
unmanage_update_buts();
- XtUnmanageChild(ind_panel);
- XtUnmanageChild(upd_ctrl);
- /* now put the ind_panel to the right of the canvas */
- FirstArg(XtNfromHoriz, NULL);
- NextArg(XtNwidth, INDPANEL_WD); /* resize it */
- SetValues(ind_panel);
- XtManageChild(ind_panel);
- update_indpanel(msw->indmask); /* now manage the relevant buttons */
- } else {
- update_indpanel(msw->indmask); /* just update indicator buttons */
}
+ /* clear the adjacent widget and set width */
+ FirstArg(XtNfromHoriz, NULL);
+ NextArg(XtNwidth, INDPANEL_WD);
}
+ SetValues(ind_panel);
+ XtManageChild(ind_panel);
+ update_indpanel(msw->indmask); /* now manage the relevant buttons */
+
put_msg(msw->modemsg);
if ((cur_mode == F_GLUE || cur_mode == F_BREAK) &&
msw->mode != F_GLUE && msw->mode != F_BREAK) {
diff -ruN xfig.3.2.4/w_mousefun.c xfig.3.2.4-patched/w_mousefun.c
--- xfig.3.2.4/w_mousefun.c Tue Mar 26 19:22:48 2002
+++ xfig.3.2.4-patched/w_mousefun.c Sun Apr 3 17:31:53 2005
@@ -54,9 +54,11 @@
static Pixmap mousefun_pm;
static Pixmap keybd_pm;

+#ifndef XAW3D
/* popup message over button when mouse enters it */
static void mouse_balloon_trigger();
static void mouse_unballoon();
+#endif

void
init_mousefun(tool)
@@ -81,11 +83,15 @@

mousefun = XtCreateManagedWidget("mouse_panel", labelWidgetClass,
tool, Args, ArgCount);
+#ifdef XAW3D
+ update_mousepanel();
+#else
/* popup when mouse passes over button */
XtAddEventHandler(mousefun, EnterWindowMask, False,
mouse_balloon_trigger, (XtPointer) mousefun);
XtAddEventHandler(mousefun, LeaveWindowMask, False,
mouse_unballoon, (XtPointer) mousefun);
+#endif
}

/* widgets are realized and windows exist at this point */
@@ -105,6 +111,17 @@
set_mousefun("", "", "", "", "", "");
}

+#ifdef XAW3D
+update_mousepanel()
+{
+ if (mousefun)
+ if (appres.showballoons)
+ XawTipEnable(mousefun,
+ "Shows which mouse buttons\nare active in each mode");
+ else
+ XawTipDisable(mousefun);
+}
+#else
/* come here when the mouse passes over a button in the mouse indicator panel */

static Widget mouse_balloon_popup = (Widget) 0;
@@ -184,6 +201,7 @@
mouse_balloon_popup = (Widget) 0;
}
}
+#endif

static void
reset_mousefun()
diff -ruN xfig.3.2.4/w_rulers.c xfig.3.2.4-patched/w_rulers.c
--- xfig.3.2.4/w_rulers.c Fri Oct 11 19:13:53 2002
+++ xfig.3.2.4-patched/w_rulers.c Sun Apr 3 17:31:53 2005
@@ -117,9 +117,11 @@
static void sideruler_selected();
static void sideruler_exposed();

+#ifndef XAW3D
/* popup message over button when mouse enters it */
static void unit_balloon_trigger();
static void unit_unballoon();
+#endif

/* turn these into macros so we can use them in
struct initialization */
@@ -356,17 +358,46 @@
unitbox_sw = XtCreateWidget("unitbox", labelWidgetClass, tool,
Args, ArgCount);
XtAppAddActions(tool_app, unitbox_actions, XtNumber(unitbox_actions));
+#ifndef XAW3D
/* popup when mouse passes over button */
XtAddEventHandler(unitbox_sw, EnterWindowMask, False,
unit_balloon_trigger, (XtPointer) unitbox_sw);
XtAddEventHandler(unitbox_sw, LeaveWindowMask, False,
unit_unballoon, (XtPointer) unitbox_sw);
+#endif
XtOverrideTranslations(unitbox_sw,
XtParseTranslationTable(unitbox_translations));
+
+#ifdef XAW3D
+ update_rulerpanel();
+#endif
}

static Widget unit_popup, unit_panel, cancel, set, beside, below, label;

+#ifdef XAW3D
+update_rulerpanel()
+{
+ char msg[80];
+
+ strcpy(msg, "Pan to 0,0 ");
+ if (appres.flipvisualhints)
+ sprintf(msg + strlen(msg), "(right button)");
+ else
+ sprintf(msg + strlen(msg), "(left button)");
+ sprintf(msg + strlen(msg), "\nSet Units/Scale ");
+ if (appres.flipvisualhints)
+ sprintf(msg + strlen(msg), "(left button)");
+ else
+ sprintf(msg + strlen(msg), "(right button)");
+
+ if (unitbox_sw)
+ if (appres.showballoons)
+ XawTipEnable(unitbox_sw, msg);
+ else
+ XawTipDisable(unitbox_sw);
+}
+#else
/* come here when the mouse passes over the unit box */

static Widget unit_balloon_popup = (Widget) 0;
@@ -474,6 +505,7 @@
unit_balloon_popup = (Widget) 0;
}
}
+#endif

/* handle unit/scale settings */

diff -ruN xfig.3.2.4/w_util.c xfig.3.2.4-patched/w_util.c
--- xfig.3.2.4/w_util.c Wed Dec 11 17:04:04 2002
+++ xfig.3.2.4-patched/w_util.c Sun Apr 3 17:31:53 2005
@@ -352,16 +352,6 @@
* (use -1 if no line desired)
*/

-#include "SmeCascade.h"
-
-void
-test_callback(w, value, garbage)
- Widget w;
- XtPointer value, garbage;
-{
- fprintf(stderr,"%d chosen\n",(int) value);
-}
-
Widget
make_pulldown_menu(entries, nent, divide_line, divide_message, parent, callback)
char *entries[];
diff -ur xfig.3.2.5-alpha5.bak/u_fonts.h xfig.3.2.5-alpha5/u_fonts.h
--- xfig.3.2.5-alpha5.bak/u_fonts.h 2004-01-06 11:47:45.000000000 -0800
+++ xfig.3.2.5-alpha5/u_fonts.h 2005-06-13 17:06:51.000000000 -0700
@@ -30,12 +30,6 @@
/* font number for the "nil" font (when user wants tiny text) */
#define NILL_FONT NUM_FONTS

-extern int psfontnum();
-extern int latexfontnum();
-extern struct _xfstruct x_fontinfo[], x_backup_fontinfo[];
-extern struct _fstruct ps_fontinfo[];
-extern struct _fstruct latex_fontinfo[];
-
/* element of linked list for each font
The head of list is for the different font NAMES,
and the elements of this list are for each different
@@ -61,5 +55,13 @@
* sizes */
};

+
+extern int psfontnum();
+extern int latexfontnum();
+extern struct _xfstruct x_fontinfo[], x_backup_fontinfo[];
+extern struct _fstruct ps_fontinfo[];
+extern struct _fstruct latex_fontinfo[];
+
+
int x_fontnum();
#endif /* U_FONTS_H */

xfig-3.2.4-4 _unstable_ port .patch