[Gambas-user] Settings.Write(MyForm) could it only update pos/size if not maximized?

Bruce Steers bsteers4 at gmail.com
Sat Jan 21 14:46:22 CET 2023


On Fri, 20 Jan 2023 at 13:22, Benoit Minisini <
benoit.minisini at gambas-basic.org> wrote:

> Le 20/01/2023 à 12:16, Bruce Steers a écrit :
> >
> >
> > On Fri, 20 Jan 2023, 02:57 Benoit Minisini,
> > <benoit.minisini at gambas-basic.org
> > <mailto:benoit.minisini at gambas-basic.org>> wrote:
> >
> >     Le 20/01/2023 à 01:28, Bruce Steers a écrit :
> >      > Hey Ben.
> >      > I've noticed something if we save a window position on program
> >     exit with
> >      > Settings.Write(Me) (my programs and the gambas ide)
> >      >
> >      > if the window is maximized the geometry saves as the full window
> >     size,
> >      > the screen and adds a var to the .Settings variant[] to specify
> >     if it's
> >      > maximized.
> >      >
> >      > On Reloading a previously maximized form and a Settings.Read(Me)
> >     call it
> >      > restores the windows full screen size then sets Maximized = True.
> >      >
> >      > Then if you un-maximize the window is still full screen just not
> >     maximized.
> >      >
> >      > Wouldn't it be better or could we have an option to save the last
> >     known
> >      > window dimensions if maximized?
> >      >
> >      > Does that make sense? and would it even work?
> >      > So if window was maximized on closing then on the next load it
> would
> >      > restore the non-maximized size, then maximize the window, then
> upon
> >      > un-maximizing the window should shrink to the last saved
> >     un-maximized size.
> >      >
> >      > It seems pointless (and i think my idea is a better method) to
> >     save the
> >      > windows size if maximized considering the Settings.class will set
> >      > Form.Maximized = True anyway.
> >      >
> >      > I feel that previous window position/size was data i wish i
> >     hadn't lost :(
> >      >
> >      > ;)
> >      >
> >      > Respects
> >      > BruceS
> >      >
> >
> >     Good point.
> >
> >     --
> >     Benoît Minisini.
> >
> >
> > It's very good in action.
> >
> > I made the change last night and already appreciated doing it. (Hence
> > the excited "ooh this is awesome" post)
> >
> > I accidentally submitted a merge thinking I was merging to my
> > bruces-patched branch!
> >   sorry, I cancelled it. (Hope that wasn't wrong of me)
> > I doubt my implementation is how you would do it.
> >
> > Respects
> > BruceS
> >
>
> As you said, the GUI component must remember the old window coordinates
> when the window is maximized (or made fullscreen, or any other state
> logically).
>
> It seems possible to do that.
>
> Regards,
>
> --
> Benoît Minisini.
>

I tried using the new property.
Changed the line 420 in Settings.class WriteWindow method..

  If hWindow.Maximized Or If hWindow.FullScreen Then
    aVal = [hWindow.Geometry.X, hWindow.Geometry.Y, hWindow.Geometry.W,
hWindow.Geometry.H, S, 1]
  Else
    aVal = [X, Y, W, H, S, 0]
  Endif

But i found if maximized...
hWindow.Geometry.X is always 0
hWindow.Geometry.Y is always 32
hWindow.Geometry.W is 3px larger than normal W
hWindow.Geometry.H is 1px larger

Respects
BruceS
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.gambas-basic.org/pipermail/user/attachments/20230121/19201d6f/attachment.htm>


More information about the User mailing list