Subject: port-arm32/11526: xterm menus don't work on Xarm32VIDC (with patch)
To: None <gnats-bugs@gnats.netbsd.org>
From: Richard Earnshaw <rearnsha@buzzard.freeserve.co.uk>
List: netbsd-bugs
Date: 11/19/2000 11:35:10
>Number:         11526
>Category:       port-arm32
>Synopsis:       xterm menus don't work on Xarm32VIDC (with patch)
>Confidential:   no
>Severity:       serious
>Priority:       medium
>Responsible:    port-arm32-maintainer
>State:          open
>Class:          sw-bug
>Submitter-Id:   net
>Arrival-Date:   Sun Nov 19 11:35:00 PST 2000
>Closed-Date:
>Last-Modified:
>Originator:     Richard Earnshaw
>Release:        NetBSD -current<NetBSD-current source date>
>Organization:
ARM
	
>Environment:
	
System: NetBSD buzzard.buzzard.freeserve.co.uk 1.5I NetBSD 1.5I (BUZZARD) #215: Mon Nov 6 00:20:40 GMT 2000 rearnsha@buzzard.buzzard.freeserve.co.uk:/usr/src/sys/arch/arm32/compile/BUZZARD arm32


>Description:

	Xterm has menus bound to CTRL + the middle or right mouse which are
	used to alter the properties of the terminal.  With Xarm32VIDC these
	don't work properly -- the highlight is never activated as the mouse
	moves over the options.
	
>How-To-Repeat:
	start an Xterm under Xarm32VIDC, note that the menus come up, but
	it isn't possible to select any option.
	
>Fix:
	Apply the following patch to the X server code.  
	hw/netbsd/arm32vidc/rpccons.c

Index: rpccons.c
===================================================================
RCS file: /cvsroot/xsrc/xc/programs/Xserver/hw/netbsd/arm32vidc/rpccons.c,v
retrieving revision 1.1.1.1
diff -p -p -r1.1.1.1 rpccons.c
*** rpccons.c	1999/06/05 00:21:00	1.1.1.1
--- rpccons.c	2000/11/19 19:25:56
*************** void rpc_mouse_io(void)
*** 149,155 ****
  {
  	int dy = 0, dx = 0;
  	struct mousebufrec mb;
! 	static int buttons = 0;
  	int was_mouse = 0;
  	xEvent x_event;
  
--- 149,155 ----
  {
  	int dy = 0, dx = 0;
  	struct mousebufrec mb;
! 	static int buttons = BUTSTATMASK;
  	int was_mouse = 0;
  	xEvent x_event;
  
*************** void rpc_mouse_io(void)
*** 170,176 ****
  		dy -= mb.y;
  
  		/* Have the buttons changed ? */
! 		if (buttons != mb.status) {
  			if(LEFTB(buttons) != LEFTB(mb.status)){
  				x_event.u.u.detail = 1;	/* leftmost */
  				x_event.u.u.type = LEFTB(mb.status) ?
--- 170,176 ----
  		dy -= mb.y;
  
  		/* Have the buttons changed ? */
! 		if (buttons != (mb.status & BUTSTATMASK)) {
  			if(LEFTB(buttons) != LEFTB(mb.status)){
  				x_event.u.u.detail = 1;	/* leftmost */
  				x_event.u.u.type = LEFTB(mb.status) ?
*************** void rpc_mouse_io(void)
*** 189,195 ****
  				    ButtonRelease : ButtonPress;
  				mieqEnqueue(&x_event);
  			}
! 			buttons = mb.status;
  		}
  	}
  
--- 189,195 ----
  				    ButtonRelease : ButtonPress;
  				mieqEnqueue(&x_event);
  			}
! 			buttons = mb.status & BUTSTATMASK;
  		}
  	}
  

	
>Release-Note:
>Audit-Trail:
>Unformatted: