[comp.sources.bugs] twm with multiple screens

Richard.Draves@M.GP.CS.CMU.EDU (08/22/88)

These patches don't allow one twm to manage multiple screens, but they
do make it possible to use one twm per screen.  Previously twm set
the input focus to a specific root window instead of PointerRoot.
These patches fix this.

Rich

*** events.c.~1~	Sun Jul 17 22:34:04 1988
--- events.c	Thu Aug 18 16:30:48 1988
***************
*** 1064,1070 ****
  		XSetWindowBorderPixmap(dpy, tmp_win->title_w, GrayTile);
  		*/
  		if (TitleFocus)
! 		    XSetInputFocus(dpy, Root, RevertToPointerRoot,
  			    CurrentTime);
  		Focus = NULL;
  	    }
--- 1064,1070 ----
  		XSetWindowBorderPixmap(dpy, tmp_win->title_w, GrayTile);
  		*/
  		if (TitleFocus)
! 		    XSetInputFocus(dpy, PointerRoot, RevertToPointerRoot,
  			    CurrentTime);
  		Focus = NULL;
  	    }
*** menus.c.~1~	Mon Jun 20 21:23:48 1988
--- menus.c	Thu Aug 18 16:30:41 1988
***************
*** 594,600 ****
  	    XMapRaised(dpy, tmp_win->icon_w);
  	    if (tmp_win == Focus)
  	    {
! 		XSetInputFocus(dpy, Root, RevertToPointerRoot,
  		    CurrentTime);
  		Focus = NULL;
  		FocusRoot = TRUE;
--- 594,600 ----
  	    XMapRaised(dpy, tmp_win->icon_w);
  	    if (tmp_win == Focus)
  	    {
! 		XSetInputFocus(dpy, PointerRoot, RevertToPointerRoot,
  		    CurrentTime);
  		Focus = NULL;
  		FocusRoot = TRUE;
***************
*** 914,920 ****
  void
  FocusOnRoot()
  {
!     XSetInputFocus(dpy, Root, RevertToPointerRoot, CurrentTime);
      if (Focus != NULL)
      {
  	XUnmapWindow(dpy, Focus->hilite_w);
--- 914,920 ----
  void
  FocusOnRoot()
  {
!     XSetInputFocus(dpy, PointerRoot, RevertToPointerRoot, CurrentTime);
      if (Focus != NULL)
      {
  	XUnmapWindow(dpy, Focus->hilite_w);
*** twm.c.~1~	Mon Jun 20 21:23:50 1988
--- twm.c	Thu Aug 18 16:30:37 1988
***************
*** 263,269 ****
      XSync(dpy, screen);
  
      XSetErrorHandler(Error);
!     XSetInputFocus(dpy, Root, RevertToPointerRoot, CurrentTime);
  
      TwmContext = XUniqueContext();
      MenuContext = XUniqueContext();
--- 263,269 ----
      XSync(dpy, screen);
  
      XSetErrorHandler(Error);
!     XSetInputFocus(dpy, PointerRoot, RevertToPointerRoot, CurrentTime);
  
      TwmContext = XUniqueContext();
      MenuContext = XUniqueContext();
***************
*** 408,414 ****
  	XConfigureWindow(dpy, tmp->w, xwcm, &xwc);
      }
  
!     XSetInputFocus(dpy, Root, RevertToPointerRoot, CurrentTime);
      XCloseDisplay(dpy);
      exit(0);
  }
--- 408,414 ----
  	XConfigureWindow(dpy, tmp->w, xwcm, &xwc);
      }
  
!     XSetInputFocus(dpy, PointerRoot, RevertToPointerRoot, CurrentTime);
      XCloseDisplay(dpy);
      exit(0);
  }