(mm-set-buffer-multibyte): New function.
[bpt/emacs.git] / lwlib / lwlib-Xaw.c
index 3ffc0d6..5a2acf2 100644 (file)
@@ -1,5 +1,7 @@
 /* The lwlib interface to Athena widgets.
-   Copyright (C) 1993 Chuck Thompson <cthomp@cs.uiuc.edu>
+Copyright (C) 1993 Chuck Thompson <cthomp@cs.uiuc.edu>
+Copyright (C) 1994, 2001, 2002, 2003, 2004, 2005, 2006,
+  2007, 2008 Free Software Foundation, Inc.
 
 This file is part of the Lucid Widget Library.
 
@@ -15,8 +17,8 @@ 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.  */
+the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
+Boston, MA 02110-1301, USA.  */
 
 #ifdef HAVE_CONFIG_H
 #include <config.h>
@@ -33,12 +35,21 @@ Boston, MA 02111-1307, USA.  */
 #include <X11/CoreP.h>
 #include <X11/Shell.h>
 
+#ifdef HAVE_XAW3D
+#include <X11/Xaw3d/Scrollbar.h>
+#include <X11/Xaw3d/Paned.h>
+#include <X11/Xaw3d/Dialog.h>
+#include <X11/Xaw3d/Form.h>
+#include <X11/Xaw3d/Command.h>
+#include <X11/Xaw3d/Label.h>
+#else /* !HAVE_XAW3D */
 #include <X11/Xaw/Scrollbar.h>
 #include <X11/Xaw/Paned.h>
 #include <X11/Xaw/Dialog.h>
 #include <X11/Xaw/Form.h>
 #include <X11/Xaw/Command.h>
 #include <X11/Xaw/Label.h>
+#endif /* HAVE_XAW3D */
 
 #include <X11/Xatom.h>
 
@@ -277,6 +288,9 @@ xaw_pop_instance (instance, up)
 
 static char overrideTrans[] =
        "<Message>WM_PROTOCOLS: lwlib_delete_dialog()";
+/* Dialogs pop down on any key press */
+static char dialogOverride[] =
+       "<KeyPress>Escape:      lwlib_delete_dialog()";
 static void wm_delete_window();
 static XtActionsRec xaw_actions [] = {
   {"lwlib_delete_dialog", wm_delete_window}
@@ -333,6 +347,8 @@ make_dialog (name, parent, pop_up_p, shell_title, icon_name, text_input_slot, ra
 
   ac = 0;
   dialog = XtCreateManagedWidget (name, dialogWidgetClass, shell, av, ac);
+  override = XtParseTranslationTable (dialogOverride);
+  XtOverrideTranslations (dialog, override);
 
   bc = 0;
   button = 0;
@@ -511,8 +527,8 @@ xaw_generic_callback (widget, closure, call_data)
 }
 
 static void
-wm_delete_window (shell, closure, call_data)
-     Widget shell;
+wm_delete_window (w, closure, call_data)
+     Widget w;
      XtPointer closure;
      XtPointer call_data;
 {
@@ -520,7 +536,13 @@ wm_delete_window (shell, closure, call_data)
   Cardinal nkids;
   int i;
   Widget *kids = 0;
-  Widget widget;
+  Widget widget, shell;
+
+  if (XtIsSubclass (w, dialogWidgetClass))
+    shell = XtParent (w);
+  else
+    shell = w;
+
   if (! XtIsSubclass (shell, shellWidgetClass))
     abort ();
   XtVaGetValues (shell, XtNnumChildren, &nkids, NULL);
@@ -670,3 +692,6 @@ xaw_creation_table [] =
   {"main",                     xaw_create_main},
   {NULL, NULL}
 };
+
+/* arch-tag: fbbd3589-ae1c-41a0-9142-f628cfee6564
+   (do not change this comment) */