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

From: Marc Schlienger <marcschlienger_at_t-online.de>
Date: Fri, 21 May 2004 23:17:09 +0200

Am Freitag, 21. Mai 2004 15:02 schrieb Mikhael Goikhman:
> 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.

First I want to thank you for your tips. Now everything works fine except one
thing. I bound the functions to a mouse click on a button. Now when I click
on the button it stays pressed in and no action is done until I click on it
another time. Why?
Here is my configuration:

DestroyFunc .
AddToFunc .
+ "I" SendToModule FvwmPerl preprocess -c -- $*

DestroyFunc MoveAndGoToPreviousDesk
AddToFunc MoveAndGoToPreviousDesk
+ "I" . MoveToDesk 0 %{$[desk.n] == 0 ? 3 : $[desk.n]-1}%
+ "I" . GotoDesk 0 %{$[desk.n] == 0 ? 3 : $[desk.n]-1}%

DestroyFunc MoveToPreviousDesk
AddToFunc MoveToPreviousDesk
+ "I" . MoveToDesk 0 %{$[desk.n] == 0 ? 3 : $[desk.n]-1}%

DestroyFunc MoveAndGoToNextDesk
AddToFunc MoveAndGoToNextDesk
+ "I" . MoveToDesk 0 %{$[desk.n] == 3 ? 0 : $[desk.n]+1}%
+ "I" . GotoDesk 0 %{$[desk.n] == 3 ? 0 : $[desk.n]+1}%

DestroyFunc MoveToNextDesk
AddToFunc MoveToNextDesk
+ "I" . MoveToDesk 0 %{$[desk.n] == 3 ? 0 : $[desk.n]+1}%

DestroyFunc MoveAndGoToPreviousPage
AddToFunc MoveAndGoToPreviousPage
+ "I" . MoveToPage %{$[page.nx] == 0 ? $[desk.pagesx]-1:\
                                $[page.nx]-1}% \
                              %{$[page.nx] > 0 ? $[page.ny]:\
                                 $[page.ny] > 0 ? $[page.ny]-1:\
                                $[desk.pagesy]-1}%
+ "I" . GotoPage %{$[page.nx] == 0 ? $[desk.pagesx]-1:\
                              $[page.nx]-1}% \
                            %{$[page.nx] > 0 ? $[page.ny]:\
                               $[page.ny] > 0 ? $[page.ny]-1:\
                              $[desk.pagesy]-1}%

DestroyFunc MoveToPreviousPage
AddToFunc MoveToPreviousPage
+ "I" . MoveToPage %{$[page.nx] == 0 ? $[desk.pagesx]-1:\
                                $[page.nx]-1}% \
                              %{$[page.nx] > 0 ? $[page.ny]:\
                                 $[page.ny] > 0 ? $[page.ny]-1:\
                                $[desk.pagesy]-1}%

DestroyFunc MoveAndGoToNextPage
AddToFunc MoveAndGoToNextPage
+ "I" . MoveToPage %{$[page.nx]+1 == $[desk.pagesx] ? 0:\
                                $[page.nx]+1}% \
                              %{$[page.nx]+1 < $[desk.pagesx] ? $[page.ny]:\
                                 $[page.ny]+1 < $[desk.pagesy] ? $[page.ny]+1:0}%
+ "I" . GotoPage %{$[page.nx]+1 == $[desk.pagesx] ? 0:\
                                $[page.nx]+1}% \
                              %{$[page.nx]+1 < $[desk.pagesx] ? $[page.ny]:\
                                 $[page.ny]+1 < $[desk.pagesy] ? $[page.ny]+1:0}%

DestroyFunc MoveToNextPage
AddToFunc MoveToNextPage
+ "I" . MoveToPage %{$[page.nx]+1 == $[desk.pagesx] ? 0:\
                                $[page.nx]+1}% \
                              %{$[page.nx]+1 < $[desk.pagesx] ? $[page.ny]:\
                                 $[page.ny]+1 < $[desk.pagesy] ? $[page.ny]+1:0}%

.
.
.

Mouse 1 8 A Function "MoveAndGoToNextDesk"
Mouse 3 8 A Function "MoveToNextDesk"
Mouse 1 0 A Function "MoveAndGoToPreviousDesk"
Mouse 3 0 A Function "MoveToPreviousDesk"
Mouse 1 7 A Function "MoveAndGoToNextPage"
Mouse 3 7 A Function "MoveToNextPage"
Mouse 1 5 A Function "MoveAndGoToPreviousPage"
Mouse 3 5 A Function "MoveToPreviousPage"

Remark: All functions work well and the effect mentioned above appears with
all functions, too.


 
--
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 - 16:19:47 BST

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