Rick Scott <[EMAIL PROTECTED]> writes:

> However, if it's not correct we should attempt to fix it. Some
> sounded sort of trivial (famous last words).

This is the last one from the src/ directory, and it's something
that works differently in LessTif vs. Motif.

I've first removed the workaround code from xterm.c

*** xterm.c.~1.610.~	Tue Mar 13 15:16:21 2001
--- xterm.c	Tue Mar 13 15:31:08 2001
***************
*** 10236,10278 ****
  
  	    case EnterNotify:
  	      {
- 		int from_menu_bar_p = 0;
- 		
  		f = x_any_window_to_frame (dpyinfo, event.xcrossing.window);
  
! #ifdef LESSTIF_VERSION
! 		/* When clicking outside of a menu bar popup to close
! 		   it, we get a FocusIn/ EnterNotify sequence of
! 		   events.  The flag event.xcrossing.focus is not set
! 		   in the EnterNotify event of that sequence because
! 		   the focus is in the menu bar,
! 		   event.xcrossing.window is the frame's X window.
! 		   Unconditionally setting the focus frame to null in
! 		   this case is not the right thing, because no event
! 		   follows that could set the focus frame to the right
! 		   value.
! 
! 		   This could be a LessTif bug, but I wasn't able to
! 		   reproduce the behavior in a simple test program.
! 		   On the other hand, Motif seems to not have this
! 		   problem.
! 
! 		   (gerd, LessTif 0.92).  */
! 		
! 		if (!event.xcrossing.focus
! 		    && f
! 		    && f->output_data.x->menubar_widget)
! 		  {
! 		    Window focus;
! 		    int revert;
! 		    
! 		    XGetInputFocus (FRAME_X_DISPLAY (f), &focus, &revert);
! 		    if (focus == XtWindow (f->output_data.x->menubar_widget))
! 		      from_menu_bar_p = 1;
! 		  }
! #endif /* LESSTIF_VERSION */
! 
! 		if (event.xcrossing.focus || from_menu_bar_p)
  		  {
  		    /* Avoid nasty pop/raise loops.  */
  		    if (f && (!(f->auto_raise)
--- 10236,10244 ----
  
  	    case EnterNotify:
  	      {
  		f = x_any_window_to_frame (dpyinfo, event.xcrossing.window);
  
! 		if (event.xcrossing.focus)
  		  {
  		    /* Avoid nasty pop/raise loops.  */
  		    if (f && (!(f->auto_raise)
***************
*** 10325,10332 ****
  	      f = x_top_window_to_frame (dpyinfo, event.xcrossing.window);
  	      if (f)
  		{
- 		  int from_menu_bar_p = 0;
- 		  
  		  if (f == dpyinfo->mouse_face_mouse_frame)
  		    {
  		      /* If we move outside the frame, then we're
--- 10291,10296 ----
***************
*** 10351,10371 ****
  		      bufp += n, count += n, numchars -= n;
  		    }
  
! #ifdef LESSTIF_VERSION
! 		  /* Please see the comment at the start of the
!                      EnterNotify case.  */
! 		  if (!event.xcrossing.focus
! 		      && f->output_data.x->menubar_widget)
! 		    {
! 		      Window focus;
! 		      int revert;
! 		      XGetInputFocus (FRAME_X_DISPLAY (f), &focus, &revert);
! 		      if (focus == XtWindow (f->output_data.x->menubar_widget))
! 			from_menu_bar_p = 1;
! 		    }
! #endif /* LESSTIF_VERSION */
! 		
! 		  if (event.xcrossing.focus || from_menu_bar_p)
  		    x_mouse_leave (dpyinfo);
  		  else
  		    {
--- 10315,10321 ----
  		      bufp += n, count += n, numchars -= n;
  		    }
  
! 		  if (event.xcrossing.focus)
  		    x_mouse_leave (dpyinfo);
  		  else
  		    {

But this shouldn't matter---this code doesn't seem to have any effect
anymore.

Start Emacs, click on Options in the menu bar to open the menu, and
click in the text area of Emacs to close the menu.  In LessTif, the
cursor is now a hollow box; the focus is still in the menu bar.  With
Motif, the text area has the focus.

With DEBUGSOURCES=MENU, I get this trace file, in case it helps
track down the problem

XmMainWindow pane: _XmIsTraversable
XmMainWindow pane: _XmIsNavigable()
 returns False 1: XmDESCENDANTS_TAB_NAVIGABLE
        Not-navigable
XmMainWindow pane: _XmIsTraversable
        Not-managed
XmCascadeButton File: RowColumn.c:MenuProcEntry(1671) - XmMENU_SUBMENU
XmCascadeButton Advanced Search/Replace: RowColumn.c:MenuProcEntry(1671) - 
XmMENU_SUBMENU
XmCascadeButton Search: RowColumn.c:MenuProcEntry(1671) - XmMENU_SUBMENU
XmCascadeButton Go To: RowColumn.c:MenuProcEntry(1671) - XmMENU_SUBMENU
XmCascadeButton Bookmarks: RowColumn.c:MenuProcEntry(1671) - XmMENU_SUBMENU
XmCascadeButton Face: RowColumn.c:MenuProcEntry(1671) - XmMENU_SUBMENU
XmCascadeButton Foreground Color: RowColumn.c:MenuProcEntry(1671) - XmMENU_SUBMENU
XmCascadeButton Background Color: RowColumn.c:MenuProcEntry(1671) - XmMENU_SUBMENU
XmCascadeButton Special Properties: RowColumn.c:MenuProcEntry(1671) - XmMENU_SUBMENU
XmCascadeButton Justification: RowColumn.c:MenuProcEntry(1671) - XmMENU_SUBMENU
XmCascadeButton Indentation: RowColumn.c:MenuProcEntry(1671) - XmMENU_SUBMENU
XmCascadeButton Text Properties: RowColumn.c:MenuProcEntry(1671) - XmMENU_SUBMENU
XmCascadeButton Edit: RowColumn.c:MenuProcEntry(1671) - XmMENU_SUBMENU
XmCascadeButton Chinese: RowColumn.c:MenuProcEntry(1671) - XmMENU_SUBMENU
XmCascadeButton Cyrillic: RowColumn.c:MenuProcEntry(1671) - XmMENU_SUBMENU
XmCascadeButton Indian: RowColumn.c:MenuProcEntry(1671) - XmMENU_SUBMENU
XmCascadeButton European: RowColumn.c:MenuProcEntry(1671) - XmMENU_SUBMENU
XmCascadeButton Set Language Environment: RowColumn.c:MenuProcEntry(1671) - 
XmMENU_SUBMENU
XmCascadeButton Set Coding Systems: RowColumn.c:MenuProcEntry(1671) - XmMENU_SUBMENU
XmCascadeButton Chinese: RowColumn.c:MenuProcEntry(1671) - XmMENU_SUBMENU
XmCascadeButton Cyrillic: RowColumn.c:MenuProcEntry(1671) - XmMENU_SUBMENU
XmCascadeButton Indian: RowColumn.c:MenuProcEntry(1671) - XmMENU_SUBMENU
XmCascadeButton European: RowColumn.c:MenuProcEntry(1671) - XmMENU_SUBMENU
XmCascadeButton Describe Language Environment: RowColumn.c:MenuProcEntry(1671) - 
XmMENU_SUBMENU
XmCascadeButton Mule (Multilingual Environment): RowColumn.c:MenuProcEntry(1671) - 
XmMENU_SUBMENU
XmCascadeButton Customize Emacs: RowColumn.c:MenuProcEntry(1671) - XmMENU_SUBMENU
XmCascadeButton Options: RowColumn.c:MenuProcEntry(1671) - XmMENU_SUBMENU
XmCascadeButton      Frames: RowColumn.c:MenuProcEntry(1671) - XmMENU_SUBMENU
XmCascadeButton Buffers: RowColumn.c:MenuProcEntry(1671) - XmMENU_SUBMENU
XmCascadeButton Spell Checking: RowColumn.c:MenuProcEntry(1671) - XmMENU_SUBMENU
XmCascadeButton Compare (Ediff): RowColumn.c:MenuProcEntry(1671) - XmMENU_SUBMENU
XmCascadeButton Merge: RowColumn.c:MenuProcEntry(1671) - XmMENU_SUBMENU
XmCascadeButton Apply Patch: RowColumn.c:MenuProcEntry(1671) - XmMENU_SUBMENU
XmCascadeButton Ediff Miscellanea: RowColumn.c:MenuProcEntry(1671) - XmMENU_SUBMENU
XmCascadeButton Version Control: RowColumn.c:MenuProcEntry(1671) - XmMENU_SUBMENU
XmCascadeButton PCL-CVS: RowColumn.c:MenuProcEntry(1671) - XmMENU_SUBMENU
XmCascadeButton Directory Search: RowColumn.c:MenuProcEntry(1671) - XmMENU_SUBMENU
XmCascadeButton Games: RowColumn.c:MenuProcEntry(1671) - XmMENU_SUBMENU
XmCascadeButton Tools: RowColumn.c:MenuProcEntry(1671) - XmMENU_SUBMENU
XmCascadeButton Manuals: RowColumn.c:MenuProcEntry(1671) - XmMENU_SUBMENU
XmCascadeButton Chinese: RowColumn.c:MenuProcEntry(1671) - XmMENU_SUBMENU
XmCascadeButton Cyrillic: RowColumn.c:MenuProcEntry(1671) - XmMENU_SUBMENU
XmCascadeButton Indian: RowColumn.c:MenuProcEntry(1671) - XmMENU_SUBMENU
XmCascadeButton European: RowColumn.c:MenuProcEntry(1671) - XmMENU_SUBMENU
XmCascadeButton Describe Language Environment: RowColumn.c:MenuProcEntry(1671) - 
XmMENU_SUBMENU
XmCascadeButton Describe: RowColumn.c:MenuProcEntry(1671) - XmMENU_SUBMENU
XmCascadeButton Help: RowColumn.c:MenuProcEntry(1671) - XmMENU_SUBMENU
XmRowColumn menubar: _XmIsTraversable
XmRowColumn menubar: _XmIsNavigable()
 returns False 1: XmNOT_NAVIGABLE
        Not-navigable
XmMainWindow pane: _XmIsTraversable
        Not-managed
XmMainWindow pane: _XmIsTraversable
XmMainWindow pane: _XmIsNavigable()
 returns False 1: XmDESCENDANTS_TAB_NAVIGABLE
        Not-navigable
(null widget): _XmIsTraversable
        Not-managed
(null widget): _XmIsTraversable
        Not-managed
XmRowColumn menubar: _XmIsTraversable
XmRowColumn menubar: _XmIsNavigable()
 returns False 1: XmNOT_NAVIGABLE
        Not-navigable
XmCascadeButton File: _XmIsTraversable
XmCascadeButton File: _XmIsNavigable()
XmRowColumn menubar:  returns False 2: XmNOT_NAVIGABLE
        Not-navigable
XmCascadeButton Edit: _XmIsTraversable
XmCascadeButton Edit: _XmIsNavigable()
XmRowColumn menubar:  returns False 2: XmNOT_NAVIGABLE
        Not-navigable
XmCascadeButton Options: _XmIsTraversable
XmCascadeButton Options: _XmIsNavigable()
XmRowColumn menubar:  returns False 2: XmNOT_NAVIGABLE
        Not-navigable
XmCascadeButton Buffers: _XmIsTraversable
XmCascadeButton Buffers: _XmIsNavigable()
XmRowColumn menubar:  returns False 2: XmNOT_NAVIGABLE
        Not-navigable
XmCascadeButton Tools: _XmIsTraversable
XmCascadeButton Tools: _XmIsNavigable()
XmRowColumn menubar:  returns False 2: XmNOT_NAVIGABLE
        Not-navigable
XmCascadeButton Help: _XmIsTraversable
XmCascadeButton Help: _XmIsNavigable()
XmRowColumn menubar:  returns False 2: XmNOT_NAVIGABLE
        Not-navigable
XmRowColumn menubar: _XmIsTraversable
XmRowColumn menubar: _XmIsNavigable()
 returns False 1: XmNOT_NAVIGABLE
        Not-navigable
XmCascadeButton File: _XmIsTraversable
XmCascadeButton File: _XmIsNavigable()
XmRowColumn menubar:  returns False 2: XmNOT_NAVIGABLE
        Not-navigable
XmCascadeButton Edit: _XmIsTraversable
XmCascadeButton Edit: _XmIsNavigable()
XmRowColumn menubar:  returns False 2: XmNOT_NAVIGABLE
        Not-navigable
XmCascadeButton Options: _XmIsTraversable
XmCascadeButton Options: _XmIsNavigable()
XmRowColumn menubar:  returns False 2: XmNOT_NAVIGABLE
        Not-navigable
XmCascadeButton Buffers: _XmIsTraversable
XmCascadeButton Buffers: _XmIsNavigable()
XmRowColumn menubar:  returns False 2: XmNOT_NAVIGABLE
        Not-navigable
XmCascadeButton Tools: _XmIsTraversable
XmCascadeButton Tools: _XmIsNavigable()
XmRowColumn menubar:  returns False 2: XmNOT_NAVIGABLE
        Not-navigable
XmCascadeButton Help: _XmIsTraversable
XmCascadeButton Help: _XmIsNavigable()
XmRowColumn menubar:  returns False 2: XmNOT_NAVIGABLE
        Not-navigable
XmCascadeButton Options: MenuBarEnter
        Not Dragging XmMENU_BAR Not Armed nothing posted posting Options
XmRowColumn menubar: _XmIsTraversable
XmRowColumn menubar: _XmIsNavigable()
 returns False 1: XmNOT_NAVIGABLE
        Not-navigable
XmCascadeButton File: _XmIsTraversable
XmCascadeButton File: _XmIsNavigable()
XmRowColumn menubar:  returns False 2: XmNOT_NAVIGABLE
        Not-navigable
XmCascadeButton Edit: _XmIsTraversable
XmCascadeButton Edit: _XmIsNavigable()
XmRowColumn menubar:  returns False 2: XmNOT_NAVIGABLE
        Not-navigable
XmCascadeButton Options: _XmIsTraversable
XmCascadeButton Options: _XmIsNavigable()
XmRowColumn menubar:  returns False 2: XmNOT_NAVIGABLE
        Not-navigable
XmCascadeButton Buffers: _XmIsTraversable
XmCascadeButton Buffers: _XmIsNavigable()
XmRowColumn menubar:  returns False 2: XmNOT_NAVIGABLE
        Not-navigable
XmCascadeButton Tools: _XmIsTraversable
XmCascadeButton Tools: _XmIsNavigable()
XmRowColumn menubar:  returns False 2: XmNOT_NAVIGABLE
        Not-navigable
XmCascadeButton Help: _XmIsTraversable
XmCascadeButton Help: _XmIsNavigable()
XmRowColumn menubar:  returns False 2: XmNOT_NAVIGABLE
        Not-navigable
XmCascadeButton Options: CascadeB.c:_XmCBMenuBarSelect(883)
        nothing posted mine Options
XmCascadeButton Options: RowColumn.c:MenuProcEntry(1671) - XmMENU_BUTTON
        ButtonPress
        XmMENU_BAR menubar
XmCascadeButton Options: _XmIsTraversable
XmCascadeButton Options: _XmIsNavigable()
XmRowColumn menubar:  returns False 2: XmNOT_NAVIGABLE
        Not-navigable
(null widget): _XmIsTraversable
        Not-managed
XmRowColumn Options: RowColumn.c:MenuProcEntry(1671) - 
XmMENU_RESTORE_TEAROFF_TO_MENUSHELL
XmCascadeButton Options: RowColumn.c:MenuProcEntry(1671) - XmMENU_CASCADING
        XmMENU_BAR sub-menu Options
XmRowColumn Options: RowColumn.c:MenuProcEntry(1671) - 
XmMENU_RESTORE_TEAROFF_TO_MENUSHELL
XmRowColumn menubar: RowColumn.c:MenuProcEntry(1671) - XmMENU_ARM
XmRowColumn menubar: RowColumn.c:MenuProcEntry(1671) - XmMENU_ARM
XmRowColumn menubar: _XmMenuBtnDown - 1 unique
XmRowColumn menubar: _XmMenuBtnDown - dragging Options posted
XmRowColumn menubar: RowColumn.c:MenuProcEntry(1671) - XmMENU_BUTTON
        ButtonPress
        XmMENU_PULLDOWN Options
XmCascadeButton Options: CascadeB.c:_XmCBMenuBarDoSelect(816)
        Options posted mine Options ButtonRelease
XmCascadeButton Options: RowColumn.c:MenuProcEntry(1671) - XmMENU_BUTTON
        ButtonRelease
        XmMENU_PULLDOWN Options
XmRowColumn Options: RowColumn.c:MenuProcEntry(1671) - XmMENU_TRAVERSAL
XmToggleButton Highlight Syntax (Global Font Lock): _XmMenuArmItem() - [��f�
XmToggleButton Highlight Syntax (Global Font Lock): RowColumn.c:MenuProcEntry(1671) - 
XmMENU_SHELL_POPDOWN
XmRowColumn menubar: _XmMenuBtnUp - not-dragging Options posted
XmCascadeButton Options: MenuBarLeave
        Not Dragging XmMENU_BAR Armed Options posted mine Options
XmRowColumn menubar: _XmMenuBtnDown - 1 unique
XmRowColumn menubar: _XmMenuBtnDown - not-dragging Options posted
XmRowColumn menubar: RowColumn.c:MenuProcEntry(1671) - XmMENU_BUTTON
        ButtonPress
        XmMENU_PULLDOWN Options
XmCascadeButton Options: RowColumn.c:MenuProcEntry(1671) - XmMENU_SHELL_POPDOWN
(null widget): _XmIsTraversable
        Not-managed
(null widget): _XmIsTraversable
        Not-managed
XmRowColumn menubar: _XmMenuBtnUp - dragging nothing posted

Reply via email to