Configuration Information [Automatically generated, do not change]: uname output: SunOS silver 5.5.1 Generic_103640-35 sun4u sparc SUNW,Ultra-5_10 Compiler: gcc Compilation CFLAGS: -g -O2 prefix: /u/phippst/sunos
FVWM Version: 2.3.33 FVWM_MODULEDIR: /u/phippst/sunos/libexec/fvwm/2.3.33 FVWM_DATADIR: /u/phippst/sunos/share/fvwm FVWM_USERDIR: /u/phippst/.fvwm Description: I'd like WarpToWindow to understand negative numbers to mean distance from the opposite edge liek standard X geomteries. Fix: Low priority patch follows hope this format is OK Index: ChangeLog =================================================================== RCS file: /u/phippst/cvsroot/fvwm/ChangeLog,v retrieving revision 1.7 diff -u -r1.7 ChangeLog --- ChangeLog 2001/05/09 08:58:55 1.7 +++ ChangeLog 2001/05/09 11:45:59 @@ -1,3 +1,8 @@ +2001-05-09 Hippo + + * fvwm/focus.c (warp_to_fvwm_window): + WarpToWindow handles negative numbers + 2001-05-07 Dominik Vogt <[EMAIL PROTECTED]> * fvwm/icons.c (DrawIconWindow): Index: fvwm/fvwm2.1 =================================================================== RCS file: /u/phippst/cvsroot/fvwm/fvwm/fvwm2.1,v retrieving revision 1.4 diff -u -r1.4 fvwm2.1 --- fvwm/fvwm2.1 2001/05/08 10:54:17 1.4 +++ fvwm/fvwm2.1 2001/05/09 11:43:59 @@ -3718,7 +3718,8 @@ default to percentage of window down and in from the upper left hand corner (or number of pixels down and in if .RI ' p ' -is appended to the numbers). This command works also with windows +is appended to the numbers). If a number is negative the opposite edge +is used and the direction reversed. This command works also with windows that are not managed by fvwm. In this case fvwm does not bring the window onto the screen if it is not visible. For example it is possible to warp the pointer to the center of the root window on Index: fvwm/focus.c =================================================================== RCS file: /u/phippst/cvsroot/fvwm/fvwm/focus.c,v retrieving revision 1.4 diff -u -r1.4 focus.c --- fvwm/focus.c 2001/05/09 08:58:55 1.4 +++ fvwm/focus.c 2001/05/09 11:15:28 @@ -462,30 +462,37 @@ } dx = (cx + Scr.Vx) / Scr.MyDisplayWidth * Scr.MyDisplayWidth; - dy = (cy +Scr.Vy) / Scr.MyDisplayHeight * Scr.MyDisplayHeight; + dy = (cy + Scr.Vy) / Scr.MyDisplayHeight * Scr.MyDisplayHeight; MoveViewport(dx,dy,True); if(IS_ICONIFIED(t)) { - x = t->icon_xl_loc + t->icon_g.width/2; + x = t->icon_xl_loc + t->icon_g.width / 2; y = t->icon_g.y + t->icon_p_height + ICON_HEIGHT(t) / 2; } else { - if (x_unit != Scr.MyDisplayWidth) + if (x_unit != Scr.MyDisplayWidth && warp_x >= 0) x = t->frame_g.x + warp_x; - else + else if (x_unit != Scr.MyDisplayWidth) + x = t->frame_g.x + t->frame_g.width + warp_x; + else if (warp_x >= 0) x = t->frame_g.x + (t->frame_g.width - 1) * warp_x / 100; - if (y_unit != Scr.MyDisplayHeight) - y = t->frame_g.y + warp_y; else + x = t->frame_g.x + (t->frame_g.width - 1) * (100 + warp_x) / 100; + + if (y_unit != Scr.MyDisplayHeight && warp_y >= 0) + y = t->frame_g.y + warp_y; + else if (y_unit != Scr.MyDisplayHeight) + y = t->frame_g.y + t->frame_g.height + warp_y; + else if (warp_y >= 0) y = t->frame_g.y + (t->frame_g.height - 1) * warp_y / 100; - } - if (warp_x >= 0 && warp_y >= 0) { - XWarpPointer(dpy, None, Scr.Root, 0, 0, 0, 0, x, y); - SetPointerEventPosition(eventp, x, y); + else + y = t->frame_g.y + (t->frame_g.height - 1) * (100 + warp_y) / 100; } + XWarpPointer(dpy, None, Scr.Root, 0, 0, 0, 0, x, y); + SetPointerEventPosition(eventp, x, y); RaiseWindow(t); /* If the window is still not visible, make it visible! */ -- Visit the official FVWM web page at <URL:http://www.fvwm.org/>. To unsubscribe from the list, send "unsubscribe fvwm-workers" in the body of a message to [EMAIL PROTECTED] To report problems, send mail to [EMAIL PROTECTED]