Sign in Join

Live chat for Free Pascal, Lazarus, Delphi and every Pascal programmer.

Mailing lists / lazarus / 2010-06

Anchor-Docking Bugs

11 messages · 4 people · –

Reply by email Subscribe to this list Your subscription

Read-only archive. Use j and k to move between messages.

Eugen Bolz

Hey,

it is awesome to see that Docking is already "working" :)

But I have some Bugs:

Under Windows 7 (also months ago on Vista) the Docking had, and still has, these two Bugs:

1. Just Click, without moving your mouse, on a Docking-Header, after that the Desktop gets a 3px height and full length - big Rect (hard to explain :( ) which is also shown if you want to dock a form to a docking-side

2. This Rect is smooth in all Windows Versions until Vista/7, in Vista/7 it is very slow :(

Also found one Bug with the IDE Implementation:

3. Open the Package-Graph , press ESC, the "normal" Package-Graph Window hides, but the Docking Window is still open

For the Bug #2, would it better to use in Vista/7 an empty form with a simple color to move to docking-sides instead of this non-filled rect?

I hope you can understand me .... =D

Anyway if you don't I'll make some screenshots for those bugs ;)

Eugen

Reply by email

Mattias Gaertner
to Eugen Bolz
Hey, it is awesome to see that Docking is already "working" :)

There are still a lot todos.

Show quoted text 9 lines
But I have some Bugs: Under Windows 7 (also months ago on Vista) the Docking had, and still has, these two Bugs: 1. Just Click, without moving your mouse, on a Docking-Header, after that the Desktop gets a 3px height and full length - big Rect (hard to explain :( ) which is also shown if you want to dock a form to a docking-side

Are you sure you use the anchordocking manager and not the easydockmgr? The anchordocking has by default a drag threshold of 4 pixel. A simple click on the header does not start the docking.
AFAIK the easydockmgr starts immediately on click.

2. This Rect is smooth in all Windows Versions until Vista/7, in Vista/7 it is very slow :(

Please report this bug.

Also found one Bug with the IDE Implementation: 3. Open the Package-Graph , press ESC, the "normal" Package-Graph Window hides, but the Docking Window is still open

I disabled the Escape when in docked state. The hide function for docked forms is not yet fully implemented.

For the Bug #2, would it better to use in Vista/7 an empty form with a simple color to move to docking-sides instead of this non-filled rect?

The preview dock rectangle should be transparent. Maybe it can be filled with some transparent color like some linux window managers do. I don't know if this is possible easily under windows.

I hope you can understand me .... =D Anyway if you don't I'll make some screenshots for those bugs ;)

Mattias

Reply by email

Martin
to Mattias Gaertner
Mattias Gaertner wrote 14 lines
> But I have some Bugs: > > Under Windows 7 (also months ago on Vista) the Docking had, and still > has, these two Bugs: > > 1. Just Click, without moving your mouse, on a Docking-Header, after > that the Desktop gets a 3px height and full length - big Rect (hard to > explain :( ) which is also shown if you want to dock a form to a > docking-side > Are you sure you use the anchordocking manager and not the easydockmgr? The anchordocking has by default a drag threshold of 4 pixel. A simple click on the header does not start the docking.

I can reproduce this here, with the anchor dock package. (didn't count the pixels, 3 or 4....)

Just a click, it happens on mouse up.

----

another one is, if you have the call-stack window => drag the dock rectangle with the mouse close to the rectangle, and go over the tool button.
=> because the buttons redraw, when the mouse goes over them, there are fragments of the rectangle left over

Other mouse over elements (like notebook tabs) seem to be disabled (don't do mouse over) during draging

Martin

Reply by email

Hans-Peter Diettrich
to Martin
Show quoted text 13 lines
>> 1. Just Click, without moving your mouse, on a Docking-Header, after >> that the Desktop gets a 3px height and full length - big Rect (hard to >> explain :( ) which is also shown if you want to dock a form to a >> docking-side >> > Are you sure you use the anchordocking manager and not the easydockmgr? > The anchordocking has by default a drag threshold of 4 pixel. A simple > click on the header does not start the docking. > I can reproduce this here, with the anchor dock package. (didn't count the pixels, 3 or 4....) Just a click, it happens on mouse up.

IMO this misbehaviour results from the inappropriate setting of DragImmediate=True, inherited from Delphi. This default does no harm with drag-drop (no harmful action triggered), but is inappropriate for drag-dock, resulting in an immediate undock. The LCL could distinguish between the start of a drag-drop or drag-dock operation, or simply could set the default to False (delayed start). Unfortunately my according suggestions were rejected by the LCL developers :-(

That's why the EasyDockMgr sets DragImmediate=False, on installation.

DoDi

Reply by email

Mattias Gaertner
to Hans-Peter Diettrich
Show quoted text 18 lines
Martin schrieb: >>> 1. Just Click, without moving your mouse, on a Docking-Header, after >>> that the Desktop gets a 3px height and full length - big Rect (hard to >>> explain :( ) which is also shown if you want to dock a form to a >>> docking-side >>> >> Are you sure you use the anchordocking manager and not the easydockmgr? >> The anchordocking has by default a drag threshold of 4 pixel. A simple >> click on the header does not start the docking. >> > I can reproduce this here, with the anchor dock package. (didn't count > the pixels, 3 or 4....) > > Just a click, it happens on mouse up. IMO this misbehaviour results from the inappropriate setting of DragImmediate=True, inherited from Delphi.

Why does that only happen on windows?

Show quoted text 8 lines
This default does no harm with drag-drop (no harmful action triggered), but is inappropriate for drag-dock, resulting in an immediate undock. The LCL could distinguish between the start of a drag-drop or drag-dock operation, or simply could set the default to False (delayed start). Unfortunately my according suggestions were rejected by the LCL developers :-( That's why the EasyDockMgr sets DragImmediate=False, on installation.

Mattias

Reply by email

Martin
to Mattias Gaertner
Mattias Gaertner wrote 28 lines
On Wed, 23 Jun 2010 11:06:46 +0200 Hans-Peter Diettrich wrote: > Martin schrieb: > > >>>> 1. Just Click, without moving your mouse, on a Docking-Header, after >>>> that the Desktop gets a 3px height and full length - big Rect (hard to >>>> explain :( ) which is also shown if you want to dock a form to a >>>> docking-side >>>> >>>> >>> Are you sure you use the anchordocking manager and not the easydockmgr? >>> The anchordocking has by default a drag threshold of 4 pixel. A simple >>> click on the header does not start the docking. >>> >>> >> I can reproduce this here, with the anchor dock package. (didn't count >> the pixels, 3 or 4....) >> >> Just a click, it happens on mouse up. >> > IMO this misbehaviour results from the inappropriate setting of > DragImmediate=True, inherited from Delphi. > Why does that only happen on windows?

It because of:

In lcl\include\dragmanager.inc TDockPerformer

1) On mouse down, it executes DragStart => but at this time does*not* yet draw the rectangle
2) On mouse up it executes DragStop, and it does call "ADockObjectCopy.HideDockImage;" And that draws the rectangle, or rather some of it, at the top of the screen.

3) ADockObjectCopy.HideDockImage; calls
   WidgetSet.DrawDefaultDockImage(EraseDockRect, DockRect, disHide);

and on windows disHide probaply doesn't do much => th pattern is always drawn with invert. But since there is no old pattern to delete, it actually paints a new one.

Other widgetsets may have better handling of disHide

Martin
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.lazarus.freepascal.org/pipermail/lazarus/attachments/20100623/d1a90cae/attachment.html>

Reply by email

Mattias Gaertner
to Martin
Show quoted text 44 lines
On 23/06/2010 15:28, Mattias Gaertner wrote: > On Wed, 23 Jun 2010 11:06:46 +0200 > Hans-Peter Diettrich wrote: > > >> Martin schrieb: >> >> >>>>> 1. Just Click, without moving your mouse, on a Docking-Header, after >>>>> that the Desktop gets a 3px height and full length - big Rect (hard to >>>>> explain :( ) which is also shown if you want to dock a form to a >>>>> docking-side >>>>> >>>>> >>>> Are you sure you use the anchordocking manager and not the easydockmgr? >>>> The anchordocking has by default a drag threshold of 4 pixel. A simple >>>> click on the header does not start the docking. >>>> >>>> >>> I can reproduce this here, with the anchor dock package. (didn't count >>> the pixels, 3 or 4....) >>> >>> Just a click, it happens on mouse up. >>> >> IMO this misbehaviour results from the inappropriate setting of >> DragImmediate=True, inherited from Delphi. >> > Why does that only happen on windows? > It because of: In lcl\include\dragmanager.inc TDockPerformer 1) On mouse down, it executes DragStart => but at this time does*not* yet draw the rectangle 2) On mouse up it executes DragStop, and it does call "ADockObjectCopy.HideDockImage;" And that draws the rectangle, or rather some of it, at the top of the screen. 3) ADockObjectCopy.HideDockImage; calls WidgetSet.DrawDefaultDockImage(EraseDockRect, DockRect, disHide); and on windows disHide probaply doesn't do much => th pattern is always drawn with invert. But since there is no old pattern to delete, it actually paints a new one.

Fixed. Please test.

Other widgetsets may have better handling of disHide

Mattias

Reply by email

Martin
to Mattias Gaertner
Mattias Gaertner wrote 23 lines
On Wed, 23 Jun 2010 15:33:46 +0100 Martin wrote: > On 23/06/2010 15:28, Mattias Gaertner wrote: > >> On Wed, 23 Jun 2010 11:06:46 +0200 >> Hans-Peter Diettrich wrote: >> >> >>>>>> 1. Just Click, without moving your mouse, on a Docking-Header, after >>>>>> that the Desktop gets a 3px height and full length - big Rect (hard to >>>>>> explain :( ) which is also shown if you want to dock a form to a >>>>>> docking-side >>>>>> > 3) ADockObjectCopy.HideDockImage; calls > WidgetSet.DrawDefaultDockImage(EraseDockRect, DockRect, disHide); > > and on windows disHide probaply doesn't do much => th pattern is always drawn with invert. But since there is no old pattern to delete, it actually paints a new one. > Fixed. Please test.

works now

Reply by email