diff src/menubar-x.c @ 175:2d532a89d707 r20-3b14

Import from CVS: tag r20-3b14
author cvs
date Mon, 13 Aug 2007 09:50:14 +0200
parents 8eaf7971accc
children 3d6bfa290dbd
line wrap: on
line diff
--- a/src/menubar-x.c	Mon Aug 13 09:49:11 2007 +0200
+++ b/src/menubar-x.c	Mon Aug 13 09:50:14 2007 +0200
@@ -145,10 +145,15 @@
 	{
 	  Lisp_Object key, val;
 	  Lisp_Object include_p = Qnil, hook_fn = Qnil, config_tag = Qnil;
+	  Lisp_Object accel;
 	  int included_spec = 0;
 	  wv->type = CASCADE_TYPE;
 	  wv->enabled = 1;
 	  wv->name = (char *) XSTRING_DATA (LISP_GETTEXT (XCAR (desc)));
+
+	  accel = menu_name_to_accelerator (wv->name);
+	  wv->accel = LISP_TO_VOID (accel);
+
 	  desc = Fcdr (desc);
 
 	  while (key = Fcar (desc), KEYWORDP (key))
@@ -166,6 +171,14 @@
 		config_tag = val;
 	      else if (EQ (key, Q_filter))
 		hook_fn = val;
+	      else if (EQ (key, Q_accelerator))
+		{
+		  if ( SYMBOLP (val)
+		       || CHARP (val))
+		    wv->accel = LISP_TO_VOID (val);
+		  else
+		    signal_simple_error ("bad keyboard accelerator", val);
+		}
 	      else 
 		signal_simple_error ("unknown menu cascade keyword", cascade);
 	    }
@@ -352,6 +365,10 @@
   int any_changes = 0;
   int count;
 
+  /* set in lwlib to the time stamp associated with the most recent menu
+     operation */
+  extern Time x_focus_timestamp_really_sucks_fix_me_better;
+
   if (!f)
     f = x_any_window_to_frame (d, XtWindow (XtParent (widget)));
   if (!f)
@@ -430,6 +447,9 @@
 	  !XFRAME_MENUBAR_DATA (f)->menubar_contents_up_to_date)
 #endif 
 	set_frame_menubar (f, 1, 0);
+      DEVICE_X_MOUSE_TIMESTAMP (XDEVICE (FRAME_DEVICE (f))) =
+	DEVICE_X_GLOBAL_MOUSE_TIMESTAMP (XDEVICE (FRAME_DEVICE (f))) =
+	x_focus_timestamp_really_sucks_fix_me_better;
       UNGCPRO;
     }
 }