*** cellscr_orig.c	Thu Jan 31 08:36:19 1991
--- cellscr.c	Thu Jan 31 08:39:09 1991
***************
*** 1707,1723 ****
  
  set_run_mode()
  {					/* disable panel & canvas input */
-     int     fd;				/* window file descriptor */
  
      frame_mask = *((Inputmask *) window_get(frame, WIN_PICK_INPUT_MASK));
!     window_set(frame, WIN_CONSUME_PICK_EVENT, MS_LEFT, 0);
      panel_mask = *((Inputmask *) window_get(panel, WIN_PICK_INPUT_MASK));
!     window_set(panel, WIN_CONSUME_PICK_EVENT, WIN_NO_EVENTS, 0);
      canvas_mask = *((Inputmask *) window_get(canvas, WIN_PICK_INPUT_MASK));
!     window_set(canvas, WIN_CONSUME_PICK_EVENT, WIN_NO_EVENTS, 0);
!     fd = (int) window_get(frame, WIN_FD);
!     fcntl(fd, F_SETFL, FNDELAY);
!     /* set non-blocking mode */
  }
  
  
--- 1707,1719 ----
  
  set_run_mode()
  {					/* disable panel & canvas input */
  
      frame_mask = *((Inputmask *) window_get(frame, WIN_PICK_INPUT_MASK));
!     window_set(frame, WIN_CONSUME_PICK_EVENT, WIN_NO_EVENTS, 0);
      panel_mask = *((Inputmask *) window_get(panel, WIN_PICK_INPUT_MASK));
!     window_set(panel, WIN_CONSUME_PICK_EVENT, MS_LEFT, 0);
      canvas_mask = *((Inputmask *) window_get(canvas, WIN_PICK_INPUT_MASK));
!     window_set(canvas, WIN_CONSUME_PICK_EVENT, MS_LEFT, 0);
  }
  
  
***************
*** 1732,1746 ****
  check_button()
  {					/* return TRUE iff the left button has
  					 * been pressed */
!     int     err, button;
      Event   event;
!     do {				/* check all events in pending queue */
! 	err = window_read_event(frame, &event);
! 	button = ((err == 0) && (event_is_up(&event)) &&
  		  (event_id(&event) == MS_LEFT));
!     } while ((err == 0) && !button);
      /* if no events remain, err will equal -1 */
!     return (button);
  }
  
  
--- 1728,1762 ----
  check_button()
  {					/* return TRUE iff the left button has
  					 * been pressed */
!     int     err, button1, button2;
!     int fd1, ff1, fd2, ff2;
      Event   event;
! 
!     /* set non-blocking mode in panel */
!     fd1 = (int) window_get(panel, WIN_FD);
!     ff1 = fcntl(fd1, F_GETFL, 0);
!     fcntl(fd1, F_SETFL, FNDELAY);
!     /* non-blocking mode in canvas */
!     fd2 = (int) window_get(canvas, WIN_FD);
!     ff2 = fcntl(fd2, F_GETFL, 0);
!     fcntl(fd2, F_SETFL, FNDELAY);
!     do {
! 	err = window_read_event(panel, &event);
! 	button1 = ((err == 0) && (event_is_up(&event)) &&
  		  (event_id(&event) == MS_LEFT));
!     } while ((err == 0) && !button1);
!     do {
! 	err = window_read_event(canvas, &event);
! 	button2 = ((err == 0) && (event_is_up(&event)) &&
! 		  (event_id(&event) == MS_LEFT));
!     } while ((err == 0) && !button2);
      /* if no events remain, err will equal -1 */
! 
!     /* Restore blocking mode in panel and canvas */
!     fcntl(fd1, F_SETFL, ff1);
!     fcntl(fd2, F_SETFL, ff2);
!     /* if button was pressed in either panel or canvas, return 1 */
!     return (button1 | button2);
  }
  
  
