]> code.delx.au - gnu-emacs/blobdiff - lwlib/lwlib-Xlw.c
Close bug#3992.
[gnu-emacs] / lwlib / lwlib-Xlw.c
index e5d9ebbd0f3fb3816ed5152e85f09f829ecb50fa..115997d361237d870a6cd65c70c9947960509698 100644 (file)
@@ -1,6 +1,7 @@
 /* The lwlib interface to "xlwmenu" menus.
    Copyright (C) 1992 Lucid, Inc.
-   Copyright (C) 1994, 2000, 2001 Free Software Foundation, Inc.
+   Copyright (C) 1994, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007,
+     2008, 2009, 2010 Free Software Foundation, Inc.
 
 This file is part of the Lucid Widget Library.
 
@@ -23,6 +24,7 @@ Boston, MA 02110-1301, USA.  */
 #include <config.h>
 #endif
 
+#include <setjmp.h>
 #include "lisp.h"
 
 #include "lwlib-Xlw.h"
@@ -82,6 +84,25 @@ highlight_hook (w, client_data, call_data)
     instance->info->highlight_cb (w, instance->info->id, call_data);
 }
 
+static void
+enter_hook (w, client_data, call_data)
+     Widget w;
+     XtPointer client_data;
+     XtPointer call_data;
+{
+  highlight_hook (w, client_data, call_data);
+}
+
+static void
+leave_hook (w, client_data, call_data)
+     Widget w;
+     XtPointer client_data;
+     XtPointer call_data;
+{
+  highlight_hook (w, client_data, NULL);
+}
+
+
 static void
 pre_hook (w, client_data, call_data)
      Widget w;
@@ -151,8 +172,8 @@ xlw_create_menubar (instance)
 
   XtAddCallback (widget, XtNopen, pre_hook, (XtPointer)instance);
   XtAddCallback (widget, XtNselect, pick_hook, (XtPointer)instance);
-  XtAddCallback (widget, XtNhighlightCallback, highlight_hook,
-                (XtPointer)instance);
+  XtAddCallback (widget, XtNleaveCallback, leave_hook, (XtPointer)instance);
+  XtAddCallback (widget, XtNenterCallback, enter_hook, (XtPointer)instance);
   return widget;
 }
 
@@ -178,8 +199,8 @@ xlw_create_popup_menu (instance)
                             popup_shell, al, ac);
 
   XtAddCallback (widget, XtNselect, pick_hook, (XtPointer)instance);
-  XtAddCallback (widget, XtNhighlightCallback, highlight_hook,
-                (XtPointer)instance);
+  XtAddCallback (widget, XtNleaveCallback, leave_hook, (XtPointer)instance);
+  XtAddCallback (widget, XtNenterCallback, enter_hook, (XtPointer)instance);
 
   return popup_shell;
 }