Re: FVWM: How to move to the next/previous page

From: Mikhael Goikhman <migo_at_homemail.com>
Date: Fri, 21 May 2004 13:02:20 +0000

On 21 May 2004 11:01:28 +0200, Marc Schlienger wrote:
>
> Am Freitag, 21. Mai 2004 00:21 schrieb Mikhael Goikhman:
> > On 20 May 2004 23:49:59 +0200, Marc Schlienger wrote:
> > > Am Donnerstag, 20. Mai 2004 23:10 schrieb Phil Stracchino:
> > > > On Thu, May 20, 2004 at 10:46:21PM +0200, Marc Schlienger wrote:
> > > > > I want to create a function that moves a window to the next/previous
> > > > > page. For example, if the current Page is 0 1 I want the window to be
> > > > > moved to Page 0 2.
> > > >
> > > > Try this (it requires FvwmPerl and assumes a 4x4 grid):
> > > >
> > > > DestroyFunc MoveWindowToNextPage
> > > > AddToFunc MoveWindowToNextPage
> > > > + I WindowId ${w.id} MoveToPage \
> > > > %{ ${page.nx} < 3 ? ${page.nx} + 1 : \
> > > > ${page.ny} < 3 ? 0 : 3 }% \
> > > > %{ ${page.nx} < 3 ? ${page.ny} : \
> > > > ${page.ny} < 3 ? ${page.ny} + 1 : 3 }%
> > >
> > > I tried this but it doesn't work. I added
> > >
> > > + I Module FvwmPerl
> > >
> > > to my init function. And I tested whether it works if I add
> > >
> > > + I SendToModule FvwmPerl preprocess -c
> > >
> > > to the MoveWindowToNextPage function. I had no luck.
> >
> > Yes, the sample above, although an ok idea, is just incorrect.
> > Good you figured out how to pass it to a preprocessing.
> > You should also replace every ${var} with correct $[var].
> >
> > This sample should work:
> >
> > Module FvwmPerl
> >
> > DestroyFunc .
> > AddToFunc .
> > + I SendToModule FvwmPerl preprocess -c -- $*
> >
> > DestroyFunc MoveWindowToRightPage
> > AddToFunc MoveWindowToRightPage
> > + I . MoveToPage %{ $[page.nx]+1 == $[desk.pagesx] ? 0 : $[page.nx]+1 }% 0p
>
> This also doesn't work. I think that MoveToPage has to be invoked either by
>
> MoveToPage 1 2
>
> or
>
> MoveToPage +1p 0p.

True, you should use $[page.ny] instead of 0p above.

> In your sample you seem to use the two possibilities together. But even when I
> trie it with
>
> + I . MoveToPage %{ $[page.nx]+1 == $[desk.pagesx] ? 0 : $[page.nx]+1 }% 1
>
> it doesn't work.

I hope you have a recent fvwm version. It should work, but it asks for a
window to select, this is a general problem of SendToModule loosing the
window context, so you may need the WindowId trick below.

> > And if you don't want to loop, then a simple "MoveToPage +1p 0p" will do
> > what you want.
>
> I know, but I want, for example, move from Page 2 0 to Page 0 1 (3x2 desk).

Please next time explain exactly what is "next page" for you, so we don't
need to guess. If I understand it correctly, then one of the solutions is:

+ I . WindowId $[w.id] MoveToPage \
      %{ $[page.nx] + 1 < $[desk.pagesx] ? $[page.nx] + 1 : 0 }% \
      %{ $[page.nx] + 1 < $[desk.pagesx] ? $[page.ny] : \
         $[page.ny] + 1 < $[desk.pagesy] ? $[page.ny] + 1 : 0 }%

But maybe the "next page" for you is not from the current page, but from
the window's page, then you should play with window coordinates $[w.x],
$[vp.width] and Move, not with MoveToPage.

Regards,
Mikhael.
--
Visit the official FVWM web page at <URL: http://www.fvwm.org/>.
To unsubscribe from the list, send "unsubscribe fvwm" in the body of a
message to majordomo_at_fvwm.org.
To report problems, send mail to fvwm-owner_at_fvwm.org.
Received on Fri May 21 2004 - 08:04:52 BST

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