[Lazarus] IDE docking flaw?

Hans-Peter Diettrich DrDiettrich1 at aol.com
Tue Jun 7 15:30:33 CEST 2011

Mattias Gaertner schrieb:

>>> The IDE package that installs the dock master can provide
>>> default layouts.
>> Which are selectable how?
> You gave the answer yourself:
>> [...]as in Delphi or my MiniIDE example :-)

Sorry, I still cannot find a Layout list in the MainBar :-(

>> [...]
>> As you already mentioned, Show can have many meanings WRT siblings and 
>> parents. I wonder if there is a legitimate expectation, that Show (or 
>> ShowControl, BringToFront...) would *not* make visible components with 
>> more than one Parent.
> I don't know. But we don't break compatibility without need. And in
> this case we can simply add a function with another name, maybe a
> better one.

My IDE model contains:

procedure TIDEForm.MakeVisible(inFront: boolean = True);
   ShowControl(nil, inFront);

> There are LCL applications. ShowControl existed since revision 5536 in
> the LCL. You can find out such facts with svn blame.

How are these affected by an added default parameter?

>> BTW the SimpleLayout should *not* remember the bounds of *docked* forms, 
>> instead it should retain their *undocked* bounds, for use when such a 
>> form is undocked later.
> That's just my preference: When a form is undocked it should not move. 
> You can send me a patch to make this optional.

The user specifies the position when undocking a form, whereupon the 
form is resized to its UndockedWidth/Height. That's Delphi docking 
convention - see also DockRect.

>> And the Options Windows page should *always* show the window placement 
>> frame, so that the user can adjust at least the extent of (actually or 
>> later) undocked forms, and can move misplaced forms into view, after the 
>> monitor count or screen resolution has changed. 
> I added an option to TIDEDockMaster.

Thanks :-)

>> I've improved TScreen 
>> and ShowForm already, so that my ShowForm will force all forms into the 
>> monitor bounds. [Patch available on demand]
> Have you tested this under Linux/gtk2?

No, but it should work when Screen.Monitors returns the true monitor 
bounds. More complicated is exclusion of the TaskBar...

>> [...]
>> I can help myself, as mentioned above. But I cannot help when my bug 
>> reports and patches are not even *recognized* by the Lazarus team :-(
> I'm sorry for that. But these patches require some time to check, which
> I don't have at the moment.

Let me know when you can spend some time for IDE docking.

> See the unit RegisterAnchorDocking as example:
>   LazarusIDE.AddHandlerOnIDERestoreWindows(@IDEAnchorDockMaster.OnIDERestoreWindows);
>   LazarusIDE.AddHandlerOnProjectClose(@IDEAnchorDockMaster.OnProjectClose);
> See here for other events:
> http://wiki.lazarus.freepascal.org/Extending_the_IDE#Project_events

Thanks for the links :-)


More information about the Lazarus mailing list