Re: FVWM: Focus problems

From: Kai Grossjohann <grossjoh_at_charly.informatik.uni-dortmund.de>
Date: 15 Apr 1996 15:45:22 +0200

>>>>> On Mon, 15 Apr 1996 08:42:00 -0400 , "eli (e.) burke"
>>>>> <eburke_at_bnr.ca> said:

  Eli> 1) Why does Focus move the mouse to the top-left corner of the
  Eli> window? It looks like it is finding the window and then
  Eli> generating a fake mouse click to Raise the window. Could
  Eli> Focus be made to ignore the mouse?

There's a patch (by Henrique Martins <martins_at_martins.hpl.hp.com>)
that allows additional arguments to the Focus command:

    Focus 0 0 == old behavior (default if no numbers given)
    Focus 50 50 == middle of window
    Focus 100 100 == lower right hand corner
    Focus 0 100 == lower left hand corner (I think)

I don't know if Chuck has/will put it in 2.0.42.

kai
--
There ain't no cure for the summertime blues.
----------focus-patch------------------------------
*** misc.h.orig	Tue Mar 19 21:44:59 1996
--- misc.h	Tue Mar 19 21:45:05 1996
***************
*** 274,280 ****
  void KeepOnTop(void);
  void show_panner(void);
  void WaitForButtonsUp(void);
! void FocusOn(FvwmWindow *t,int DeIconifyOnly);
  Bool PlaceWindow(FvwmWindow *tmp_win, unsigned long flags,int Desk);
  void free_window_names (FvwmWindow *tmp, Bool nukename, Bool nukeicon);
  
--- 274,280 ----
  void KeepOnTop(void);
  void show_panner(void);
  void WaitForButtonsUp(void);
! void FocusOn(FvwmWindow *t,int DeIconifyOnly,int percentX,int percentY);
  Bool PlaceWindow(FvwmWindow *tmp_win, unsigned long flags,int Desk);
  void free_window_names (FvwmWindow *tmp, Bool nukename, Bool nukeicon);
  
*** builtins.c.orig	Tue Mar 19 21:23:28 1996
--- builtins.c	Tue Mar 19 23:12:58 1996
***************
*** 150,156 ****
   * Moves focus to specified window 
   *
   *************************************************************************/
! void FocusOn(FvwmWindow *t,int DeIconifyOnly)
  {
  #ifndef NON_VIRTUAL
    int dx,dy;
--- 150,156 ----
   * Moves focus to specified window 
   *
   *************************************************************************/
! void FocusOn(FvwmWindow *t,int DeIconifyOnly,int percentX, int percentY)
  {
  #ifndef NON_VIRTUAL
    int dx,dy;
***************
*** 191,198 ****
    }
    else
    {
!     x = t->frame_x;
!     y = t->frame_y;
    }
    if(!(t->flags & ClickToFocus))
      XWarpPointer(dpy, None, Scr.Root, 0, 0, 0, 0, x+2,y+2);
--- 191,200 ----
    }
    else
    {
!     x = t->frame_x + (t->frame_width * percentX) / 100;
!     y = t->frame_y + (t->frame_height * percentY) / 100;
!     if (x == t->frame_x + t->frame_width) x--;
!     if (y == t->frame_y + t->frame_height) y--;
    }
    if(!(t->flags & ClickToFocus))
      XWarpPointer(dpy, None, Scr.Root, 0, 0, 0, 0, x+2,y+2);
***************
*** 705,715 ****
  
    if(val1 != 0)
    {
!     FocusOn((FvwmWindow *)val1,0);
      if (((FvwmWindow *)(val1))->flags & ICONIFIED)
      {
        DeIconify((FvwmWindow *)val1);
!       FocusOn((FvwmWindow *)val1,0);
      }
    }
  }
--- 707,717 ----
  
    if(val1 != 0)
    {
!     FocusOn((FvwmWindow *)val1,0,0,0);
      if (((FvwmWindow *)(val1))->flags & ICONIFIED)
      {
        DeIconify((FvwmWindow *)val1);
!       FocusOn((FvwmWindow *)val1,0,0,0);
      }
    }
  }
***************
*** 718,727 ****
  void focus_func(XEvent *eventp,Window w,FvwmWindow *tmp_win,
  		unsigned long context, char *action, int *Module)
  {
    if (DeferExecution(eventp,&w,&tmp_win,&context,SELECT,ButtonRelease))
      return;
  
!   FocusOn(tmp_win,0);
  }
  
  
--- 720,738 ----
  void focus_func(XEvent *eventp,Window w,FvwmWindow *tmp_win,
  		unsigned long context, char *action, int *Module)
  {
+   int val1, val2, val1_unit, val2_unit, n;
+   
+   n = GetTwoArguments(action, &val1, &val2, &val1_unit, &val2_unit);
+ 
+   if (n != 2 || val1 < 0 || val1 > 100 || val2 < 0 || val2 > 100) {
+     val1 = 0;
+     val2 = 0;
+   }
+ 
    if (DeferExecution(eventp,&w,&tmp_win,&context,SELECT,ButtonRelease))
      return;
  
!   FocusOn(tmp_win,0,val1,val2);
  }
  
  
*** icons.c.orig	Tue Mar 19 21:43:11 1996
--- icons.c	Tue Mar 19 21:43:13 1996
***************
*** 730,741 ****
      }
  
    if(tmp_win->flags & ClickToFocus)
!     FocusOn(tmp_win,1);
  
    KeepOnTop();
  
    return;
! }
  
  
  /****************************************************************************
--- 730,743 ----
      }
  
    if(tmp_win->flags & ClickToFocus)
!     FocusOn(tmp_win,1,0,0);
  
    KeepOnTop();
  
    return;
! } 
!  
!  
  
  
  /****************************************************************************
----------end-----------------------------------
--
Visit the official FVWM web page at <URL:http://www.hpc.uh.edu/fvwm/>.
To unsubscribe from the list, send "unsubscribe fvwm" in the body of a
message to majordomo_at_hpc.uh.edu.
To report problems, send mail to fvwm-owner_at_hpc.uh.edu.
Received on Mon Apr 15 1996 - 08:42:44 BST

This archive was generated by hypermail 2.3.0 : Mon Aug 29 2016 - 19:37:58 BST