Dominique Michel
2013-05-13 19:05:41 UTC
Hi,
It is several Maximize function in Fvwm-Crystal. When a new window is
opened, a SetEnv made a variable with its window id and its
maximized state. 2 temporary files are also created, one with the
window width, the other with its height. I done this because I found no
other to do what I want and this to survive a restart. May be it is
simpler solution, but I didn't find it if it exist.
When a given Maximize function is called, I want the window to go in
that state. Only the SetEnv is updated. If the same Maximize function
is called 2 consecutive times, I want the window to return in its
original state and at its original location. The 2 temporary files are
used to get the original size.
It is a wrapper function:
DestroyFunc Window-Resize
AddToFunc Window-Resize
+ I Test (EnvMatch CurrentWindowState_$[w.id] "$0") NS-Default
+ I TestRc (NoMatch) NS-"$0"
which is called by
Window-Resize argument
where argument can be one of
Maximize Minimize Default A100 H100 V100 VHgrow Hgrow Vgrow
The function that return to the original size is:
DestroyFunc NS-Default
AddToFunc NS-Default
+ I Maximize $[WindowWidth_$[w.id]] $[WindowHeight_$[w.id]]
+ I SetEnv CurrentWindowState_$[w.id] Default
And the other functions look like:
DestroyFunc NS-Maximize
AddToFunc NS-Maximize
+ I Maximize True 100 100
+ I SetEnv CurrentWindowState_$[w.id] Maximize
DestroyFunc NS-Minimize
AddToFunc NS-Minimize
+ I ResizeMaximize direction East 200p 60p
+ I SetEnv CurrentWindowState_$[w.id] Minimize
It is also the Fullscreen function that is called directly, and when
quitting the full screen style, NS-Default is called directly.
If I open a new window, place it in the middle of the screen and do
With NS-Minimize the window get very small and go to its left corner. I
try other direction like West, and to add fixeddirection, but I was not
able to get it to minimize around its right corner, which I would
prefer.
Beside that, NS-Maximize -> NS-Minimize -> NS-Minimize work as expected
and described above.
Another issue is with the FullScreen function. When returning to the
normal state, NS-Default is called with:
DestroyFunc Fullscreen
AddToFunc Fullscreen
+ I ThisWindow (State 19, !FvwmButtons, !MPlayer) Fullscreen-Stop
+ I TestRc (NoMatch) ThisWindow (!State 19, !FvwmButtons, !MPlayer)
Fullscreen-Start
AddToFunc FullScreen-Stop
snip
+ I NS-Default
Normally, it work just fine and the window is restored to its original
size and location. But sometime after a restart, only the window
borders and title style are restored and the window remain in its full
maximized state. When this append, I can call FulScreen several times,
the window never return to its original size and location.
I done some experiment. If I run
WindowID id FullScrenn-Stop
the problem is the same.
If I change NS-Default to
+ I Maximize False $[WindowWidth_$[w.id]] $[WindowHeight_$[w.id]]
the problem is the same.
If I change it to
+ I Maximize True $[WindowWidth_$[w.id]] $[WindowHeight_$[w.id]]
I get the original size, but the window is always at the top left
border of the screen, that even with a newly opened window or when
restoring NS-Default from another Maximize function than FullScreen.
And I want the location to be restored too.
At restart, it is a fullscreen recover function that apply again
the styles to the maximized windows:
DestroyFunc Fullscreen-Recover
AddToFunc Fullscreen-Recover
+ I WindowStyle !Title, !Borders, !Handles, Iconifiable,
ResizeHintOverride
+ I UpdateStyles
+ I WindowStyle State 19
+ I WindowStyle State 20
+ I Maximize ewmhiwa True 100 100
+ I WindowStyle !Maximizable, FixedSize
+ I UpdateStyles
DestroyFunc RecoverFullscreen
AddToFunc RecoverFullscreen
PipeRead 'for i in $[infostore.TmpDirectory]/fullscreen.19.*; do
wid=`basename "$i" | awk --field-separator . \'{print $$3}\'`; echo "+
I WindowId ${wid} Fullscreen-Recover"; done'
AddToFunc StartFunction I Schedule 1000 RecoverFullscreen
Is it possible to insure the correct location will be restored after
a restart and to not use more SetEnv or temporary files for that?
Best,
Dominique
It is several Maximize function in Fvwm-Crystal. When a new window is
opened, a SetEnv made a variable with its window id and its
maximized state. 2 temporary files are also created, one with the
window width, the other with its height. I done this because I found no
other to do what I want and this to survive a restart. May be it is
simpler solution, but I didn't find it if it exist.
When a given Maximize function is called, I want the window to go in
that state. Only the SetEnv is updated. If the same Maximize function
is called 2 consecutive times, I want the window to return in its
original state and at its original location. The 2 temporary files are
used to get the original size.
It is a wrapper function:
DestroyFunc Window-Resize
AddToFunc Window-Resize
+ I Test (EnvMatch CurrentWindowState_$[w.id] "$0") NS-Default
+ I TestRc (NoMatch) NS-"$0"
which is called by
Window-Resize argument
where argument can be one of
Maximize Minimize Default A100 H100 V100 VHgrow Hgrow Vgrow
The function that return to the original size is:
DestroyFunc NS-Default
AddToFunc NS-Default
+ I Maximize $[WindowWidth_$[w.id]] $[WindowHeight_$[w.id]]
+ I SetEnv CurrentWindowState_$[w.id] Default
And the other functions look like:
DestroyFunc NS-Maximize
AddToFunc NS-Maximize
+ I Maximize True 100 100
+ I SetEnv CurrentWindowState_$[w.id] Maximize
DestroyFunc NS-Minimize
AddToFunc NS-Minimize
+ I ResizeMaximize direction East 200p 60p
+ I SetEnv CurrentWindowState_$[w.id] Minimize
It is also the Fullscreen function that is called directly, and when
quitting the full screen style, NS-Default is called directly.
If I open a new window, place it in the middle of the screen and do
With NS-Minimize the window get very small and go to its left corner. I
try other direction like West, and to add fixeddirection, but I was not
able to get it to minimize around its right corner, which I would
prefer.
Beside that, NS-Maximize -> NS-Minimize -> NS-Minimize work as expected
and described above.
Another issue is with the FullScreen function. When returning to the
normal state, NS-Default is called with:
DestroyFunc Fullscreen
AddToFunc Fullscreen
+ I ThisWindow (State 19, !FvwmButtons, !MPlayer) Fullscreen-Stop
+ I TestRc (NoMatch) ThisWindow (!State 19, !FvwmButtons, !MPlayer)
Fullscreen-Start
AddToFunc FullScreen-Stop
snip
+ I NS-Default
Normally, it work just fine and the window is restored to its original
size and location. But sometime after a restart, only the window
borders and title style are restored and the window remain in its full
maximized state. When this append, I can call FulScreen several times,
the window never return to its original size and location.
I done some experiment. If I run
WindowID id FullScrenn-Stop
the problem is the same.
If I change NS-Default to
+ I Maximize False $[WindowWidth_$[w.id]] $[WindowHeight_$[w.id]]
the problem is the same.
If I change it to
+ I Maximize True $[WindowWidth_$[w.id]] $[WindowHeight_$[w.id]]
I get the original size, but the window is always at the top left
border of the screen, that even with a newly opened window or when
restoring NS-Default from another Maximize function than FullScreen.
And I want the location to be restored too.
At restart, it is a fullscreen recover function that apply again
the styles to the maximized windows:
DestroyFunc Fullscreen-Recover
AddToFunc Fullscreen-Recover
+ I WindowStyle !Title, !Borders, !Handles, Iconifiable,
ResizeHintOverride
+ I UpdateStyles
+ I WindowStyle State 19
+ I WindowStyle State 20
+ I Maximize ewmhiwa True 100 100
+ I WindowStyle !Maximizable, FixedSize
+ I UpdateStyles
DestroyFunc RecoverFullscreen
AddToFunc RecoverFullscreen
PipeRead 'for i in $[infostore.TmpDirectory]/fullscreen.19.*; do
wid=`basename "$i" | awk --field-separator . \'{print $$3}\'`; echo "+
I WindowId ${wid} Fullscreen-Recover"; done'
AddToFunc StartFunction I Schedule 1000 RecoverFullscreen
Is it possible to insure the correct location will be restored after
a restart and to not use more SetEnv or temporary files for that?
Best,
Dominique
--
"We have the heroes we deserve."
"We have the heroes we deserve."