[lazarus] A Bug, a feature or am i just stupid (Dialogpositions)
Mattias Gaertner
nc-gaertnma at netcologne.de
Mon Sep 29 08:26:06 EDT 2003
On Sun, 28 Sep 2003 15:26:23 +0200
Tobi <lazarus at bick-online.de> wrote:
> Hi,
>
> im using Lazarus CVS(today, about 12:00) version and FPC 1.0.10.
>
> I have a dialog (fsnormal, podefault, wsnormal, bsdialog)
> and i want to save the position of the window (left and top).
> Saving is no problem, i use OnHide, OnClose and OnDestroy.
> OnChangeBounds works till i hide - show the window. See below.
>
> OnCreate:
> I restore Left and Top
> - looks like that the buttons, notebook, ... are placed somewhere
> - the window stays in podesign
> screenshot: http://www.bick-online.de/download/scr1.png
Can you send a small example?
> Override Create
> - restore old position - works fine
>
> OnShow
> - restore last position
> - nothing happens
> - window stays on "Override create" position
Windowmanagers can only be asked to move a window, often they ignore it.
gtk2 has some improvements for this.
> OnActivate
> - use left:100, top:100
> - move to 200, 200
> - hide - show
> - you see the window comes back at 100, 100 and then moves to 200,
> 200- again hide - show without moving
> - restore at 200, 200
> - move to 300, 300
> - the same. window comes at 200, 200 and ........
The LCL asks the gtk-interface, which asks the gtk, which asks X, which asks
the windowmanager. This works asynchronous. What you see is the answer of
gtk/X/wm.
> OnPaint
> - see OnActivate
> - but worse when you move the window. is it called when you move?
Depends on the windowmanager. Most of the times: no.
> OnChangeBounds
> - i can see that left and top change
> - hide - show
> - looks like OnChangeBounds is called with
> position from "Override create"
> - useless for me
>
> So, what is it?
> How to save - restore a window position?
In OnCreate, or after the 'inherited' in the overriden constructor.
Mattias
More information about the Lazarus
mailing list