diff -u --recursive orig/xemacs-19.14/INSTALL xemacs-19.14/INSTALL --- orig/xemacs-19.14/INSTALL Wed Jun 26 17:42:35 1996 +++ xemacs-19.14/INSTALL Wed Jun 26 17:48:08 1996 @@ -212,6 +212,10 @@ drop support. `configure' will attempt to detect this option and define `--with-cde' for you. +The `--with-offix option allows you to enable or disable OffiX drag and +drop support. `configure' will attempt to detect this option and +define `--with-offix' for you. + The `--with-energize' option specifies that XEmacs should be built with support for the Lucid Energize system. (If you have not purchased Energize, specifying this option won't gain you anything.) diff -u --recursive orig/xemacs-19.14/configure xemacs-19.14/configure --- orig/xemacs-19.14/configure Wed Jun 26 18:48:40 1996 +++ xemacs-19.14/configure Wed Jun 26 18:48:19 1996 @@ -211,6 +211,7 @@ Motif dialog boxes will be used if Motif can be found.) --with-cde (*) Compile in support for CDE drag and drop. +--with-offix (*) Compile in support for OffiX drag and drop. --with-xpm (*) Compile with support for XPM files. It is highly recommended that you obtain XPM (version 3.4g or better) if you don't already @@ -625,6 +626,22 @@ eval "${opt}=\"${val}\"" ;; + ## Has the user requested OffiX support? + "with_offix" ) + ## Make sure the value given was either "yes" or "no". + case "${val}" in + y | ye | yes ) val=yes ;; + n | no ) val=no ;; + * ) + (echo "${progname}: the \`--${optname}' option is supposed to have a boolean value. +Set it to either \`yes' or \`no'." + echo "${short_usage}") >&2 + exit 1 + ;; + esac + eval "${opt}=\"${val}\"" + ;; + ## Has the user requested XPM support? "with_xpm" ) ## Make sure the value given was either "yes" or "no". @@ -3557,6 +3574,10 @@ echo "configure: warning: --with-cde ignored: Not valid without X support" >&2 with_menubars='no' fi + if [ "x${with_offix}" != x ]; then + echo "configure: warning: --with-offix ignored: Not valid without X support" >&2 + with_offix='no' + fi if [ "x${with_menubars}" != x ]; then echo "configure: warning: --with-menubars ignored: Not valid without X support" >&2 with_menubars='no' @@ -3574,6 +3595,7 @@ with_toolbars='no' fi with_cde='no' + with_offix='no' with_menubars='no' with_scrollbars='no' with_dialogs='no' @@ -4229,6 +4251,66 @@ fi # +# See if we can find OffiX. +# +if test "${window_system}" != "none" ; then + if test "${with_offix}" != "no" ; then + if test "${with_offix}" != "yes" ; then + internal_offix_lib_found='no' + ac_save_LIBS="${LIBS}" +LIBS="${LIBS} -lDnd" +ac_have_lib="" +test -n "$silent" || echo "checking for -lDnd" +cat > conftest.${ac_ext} <> confdefs.h +DEFS="$DEFS -DHAVE_OFFIX_DND=1" +ac_sed_defs="${ac_sed_defs}\${ac_dA}HAVE_OFFIX_DND\${ac_dB}HAVE_OFFIX_DND\${ac_dC}1\${ac_dD} +\${ac_uA}HAVE_OFFIX_DND\${ac_uB}HAVE_OFFIX_DND\${ac_uC}1\${ac_uD} +\${ac_eA}HAVE_OFFIX_DND\${ac_eB}HAVE_OFFIX_DND\${ac_eC}1\${ac_eD} +" +} + +fi + +# # See if we can find Xlocale.h. # with_xlocale_h='no' @@ -8010,6 +8092,9 @@ fi if [ "$with_cde" = "yes" ]; then echo " Compiling in support for CDE." +fi +if [ "$with_offix" = "yes" ]; then + echo " Compiling in support for OffiX." fi if [ "$with_mocklisp" = "yes" ]; then echo " Compiling in support for Mocklisp." diff -u --recursive orig/xemacs-19.14/configure.in xemacs-19.14/configure.in --- orig/xemacs-19.14/configure.in Wed Jun 26 19:13:39 1996 +++ xemacs-19.14/configure.in Wed Jun 26 17:48:18 1996 @@ -226,6 +226,7 @@ Motif dialog boxes will be used if Motif can be found.) --with-cde (*) Compile in support for CDE drag and drop. +--with-offix (*) Compile in support for OffiX drag and drop. --with-xpm (*) Compile with support for XPM files. It is highly recommended that you obtain XPM (version 3.4g or better) if you don't already @@ -640,6 +641,22 @@ eval "${opt}=\"${val}\"" ;; + ## Has the user requested OffiX support? + "with_offix" ) + ## Make sure the value given was either "yes" or "no". + case "${val}" in + y | ye | yes ) val=yes ;; + n | no ) val=no ;; + * ) + (echo "${progname}: the \`--${optname}' option is supposed to have a boolean value. +Set it to either \`yes' or \`no'." + echo "${short_usage}") >&2 + exit 1 + ;; + esac + eval "${opt}=\"${val}\"" + ;; + ## Has the user requested XPM support? "with_xpm" ) ## Make sure the value given was either "yes" or "no". @@ -2730,6 +2747,10 @@ ] AC_WARN(--with-cde ignored: Not valid without X support) [ with_menubars='no' fi + if [ "x${with_offix}" != x ]; then + ] AC_WARN(--with-offix ignored: Not valid without X support) [ + with_offix='no' + fi if [ "x${with_menubars}" != x ]; then ] AC_WARN(--with-menubars ignored: Not valid without X support) [ with_menubars='no' @@ -2747,6 +2768,7 @@ with_toolbars='no' fi with_cde='no' + with_offix='no' with_menubars='no' with_scrollbars='no' with_dialogs='no' @@ -3197,6 +3219,33 @@ fi # +# See if we can find OffiX. +# +if test "${window_system}" != "none" ; then + if test "${with_offix}" != "no" ; then + if test "${with_offix}" != "yes" ; then + internal_offix_lib_found='no' + AC_HAVE_LIBRARY(-lDnd, internal_offix_lib_found='yes') + if test "${internal_offix_lib_found}" = "yes" ; then + internal_offix_includes_found='no' + for arg in ${DEFS} /usr/include + do + if test -f `echo "${arg}/OffiX/DragAndDrop.h" | sed 's/^\-I//'` ; then + internal_offix_includes_found='yes' + fi + done + if test "${internal_offix_includes_found}" = "yes" ; then + with_offix='yes' + fi + fi + fi + fi +fi +if test "${with_offix}" = "yes" ; then + AC_DEFINE(HAVE_OFFIX_DND) +fi + +# # See if we can find Xlocale.h. # with_xlocale_h='no' @@ -4314,6 +4363,9 @@ fi if [ "$with_cde" = "yes" ]; then echo " Compiling in support for CDE." +fi +if [ "$with_offix" = "yes" ]; then + echo " Compiling in support for OffiX." fi if [ "$with_mocklisp" = "yes" ]; then echo " Compiling in support for Mocklisp." diff -u --recursive orig/xemacs-19.14/src/Makefile.in.in xemacs-19.14/src/Makefile.in.in --- orig/xemacs-19.14/src/Makefile.in.in Wed Jun 26 19:42:00 1996 +++ xemacs-19.14/src/Makefile.in.in Wed Jun 26 19:45:26 1996 @@ -739,6 +739,12 @@ # define LIB_CDE #endif +#ifdef HAVE_OFFIX_DND +# define LIB_OFFIX_DND -lDnd +#else +# defile LIB_OFFIX_DND +#endif + #if (defined(LIB_INTL) && (!(defined(I18N3) || defined(I18N4)))) /* this should be defined by s- files, but we should not use it unless I18N3 or I18N4 are defined. */ @@ -1161,7 +1167,7 @@ ${lispdir}bytecomp/byte-optimize.elc \ ${lispdir}utils/advice.elc -LIBES = NAS_LIBS SOUND_LIBS SOCKS_LIBS ENERGIZE_LIBS LIB_CDE \ +LIBES = NAS_LIBS SOUND_LIBS SOCKS_LIBS ENERGIZE_LIBS LIB_CDE LIB_OFFIX_DND\ LIB_TOOLTALK $(LIBX) \ LIBS_SYSTEM LIBS_MACHINE LIBS_TERMCAP LIB_INTL QUANTIFY_LIBS \ DATABASE_LIBS LIBS_DEBUG $(GNULIB_VAR) LIB_MATH LIB_STANDARD \ diff -u --recursive orig/xemacs-19.14/src/config.h.in xemacs-19.14/src/config.h.in --- orig/xemacs-19.14/src/config.h.in Wed Jun 26 19:42:34 1996 +++ xemacs-19.14/src/config.h.in Wed Jun 26 19:54:52 1996 @@ -353,6 +353,10 @@ */ #undef HAVE_CDE +/* Define this if you want to use the OffiX Drag and Drop +*/ +#undef HAVE_OFFIX_DND + /* Mocklisp Support. */ #undef MOCKLISP_SUPPORT diff -u --recursive orig/xemacs-19.14/src/frame-x.c xemacs-19.14/src/frame-x.c --- orig/xemacs-19.14/src/frame-x.c Wed Jun 26 17:16:34 1996 +++ xemacs-19.14/src/frame-x.c Wed Jun 26 17:17:19 1996 @@ -971,6 +971,47 @@ } #endif +#ifdef HAVE_OFFIX_DND +#include + +void +x_offix_drop_event_handler (Widget widget, XtPointer data, XEvent *event, Boolean *b) +{ + int i, len, Type; + unsigned char *Data; + unsigned long Size; + + Lisp_Object path = Qnil; + Lisp_Object frame = Qnil; + + struct gcpro gcpro1, gcpro2; + + Type = DndDataType(event); + if((Type != DndFile) && (Type != DndFiles) && (Type != DndExe)) return; + DndGetData(&Data, &Size); + + GCPRO2 (path, frame); + + frame = make_frame ((struct frame *) data); + + if(Type == DndFiles) { + while(*Data) { + len = strlen((char*)Data); + path = make_string ((char*)Data, len); + va_run_hook_with_args (Qdrag_and_drop_functions, 2, frame, path); + Data += len+1; + } + } else { + path = make_string ((char*)Data, strlen(Data)); + va_run_hook_with_args (Qdrag_and_drop_functions, 2, frame, path); + } + + UNGCPRO; + return; +} + +#endif + /************************************************************************/ /* widget creation */ @@ -1636,6 +1677,15 @@ dnd_transfer_cb_rec, DtNpreserveRegistration, False, NULL); + } +#endif + +#ifdef HAVE_OFFIX_DND + { + DndInitialize(FRAME_X_SHELL_WIDGET (f)); + DndRegisterDropWidget(FRAME_X_TEXT_WIDGET (f), x_offix_drop_event_handler, + (XtPointer) f); + } #endif diff -u --recursive orig/xemacs-19.14/src/frame.c xemacs-19.14/src/frame.c --- orig/xemacs-19.14/src/frame.c Wed Jun 26 17:16:40 1996 +++ xemacs-19.14/src/frame.c Wed Jun 26 17:17:17 1996 @@ -54,7 +54,7 @@ Lisp_Object Vmap_frame_hook, Qmap_frame_hook; Lisp_Object Vunmap_frame_hook, Qunmap_frame_hook; Lisp_Object Vallow_deletion_of_last_visible_frame; -#ifdef HAVE_CDE +#if defined (HAVE_CDE) || defined (HAVE_OFFIX_DND) Lisp_Object Vdrag_and_drop_functions, Qdrag_and_drop_functions; #endif Lisp_Object Vmouse_motion_handler; @@ -2879,7 +2879,7 @@ defsymbol (&Qmouse_leave_frame_hook, "mouse-leave-frame-hook"); defsymbol (&Qmap_frame_hook, "map-frame-hook"); defsymbol (&Qunmap_frame_hook, "unmap-frame-hook"); -#ifdef HAVE_CDE +#if defined (HAVE_CDE) || defined (HAVE_OFFIX_DND) defsymbol (&Qdrag_and_drop_functions, "drag-and-drop-functions"); #endif @@ -3057,7 +3057,7 @@ */ ); Vallow_deletion_of_last_visible_frame = Qnil; -#ifdef HAVE_CDE +#if defined (HAVE_CDE) || defined (HAVE_OFFIX_DND) DEFVAR_LISP ("drag-and-drop-functions", &Vdrag_and_drop_functions /* Function or functions to run when an object is dropped on a frame. Each function is called with two args, a frame and a pathname.