View Issue Details
|ID||Project||Category||View Status||Date Submitted||Last Update|
|0001807||JEDI VCL||00 JVCL Components||public||2004-05-27 12:47||2005-02-04 04:06|
|Target Version||Fixed in Version|
|Summary||0001807: JvDocking: docking free floating dock clients to each other disables moving the forms|
|Description||Here's another one I've stumbled across:|
If I dock one form to another dock form, I cannot move the resulting dock combo with the mouse but I can move it using the "Move" command on the system menu. This doesn't seem to be related to the dock style: it affects all dock styles that supports the "EachOtherDock" property
|Tags||No tags attached.|
|has duplicate||0002119||resolved||remkobonte||JvDocking freezes form|
|has duplicate||0002155||resolved||remkobonte||Docking: Docking client forms together|
|has duplicate||0002411||resolved||obones||Docking-Crash: Refered to Issue-ID 2409|
|has duplicate||0002409||resolved||obones||Using Dock-Server/Client: Crash after closing Tap-Form|
|related to||0002128||resolved||remkobonte||JvDocking - Changing hat runtime|
Moving is handled in TJvDockClient.FormPositionDockRect. If you look at the code of that procedure you see that a DockStyle is needed.
When you dock 2 forms, a TJvDockableForm form is created. If you look in the constructor of that class, you can see that a TJvDockClient instance is created.
Now normally if you create a TJvDockClient and leave the DockStyle property nil, then in the Loaded procedure the DockStyle is assigned. (See TJvDockBaseControl.Loaded). Note that you only can change the DockStyle when csLoading is in ComponentState, thus only before the inherited Loaded is called.
The problem is thus that if you create a TJvDockClient instance, you can never assign the DockStyle property.
You can see that moving works if you assign a DockStyle if you change the code of the TJvDockableForm constructor to:
TComponentAccess = class(TPersistent)
constructor TJvDockableForm.Create(AOwner: TComponent);
DragKind := dkDock;
FDockClient := TJvDockClient.Create(Self);
TComponentAccess(FDockClient).FComponentState + [csLoading];
||Okay, this seems to be fixable. I have a reasonable stable working version now, but I think it is best to delay putting it on CVS until after JVCL 3.0 release.|
|If you commit in the HEAD branch, OBones can backport your chances to the BETA2 branch if he thinks it's OK. That's one of the reasons he created a branch: so we could continue committing to the HEAD without affecting the beta release(s)|
||Okay, committed into CVS. Please test it and give feedback.|
It works a lot better but it is still possible to get into a situation where an undocked window with tabdocked subwindows freezes on the screen and cannot be moved.
It's hard to understand what causes it, but playing around with the MSDN2002 demo a while - docking and undocking forms - I could get the demo to freeze up some of the dock windows within a few minutes. Once in that situation, it doesn't seem there is any way to "unfreeze" it.
I haven't tested any of the other dockstyle, just VSNet.
||Please refer to 2411 for details, please create a new one if you think it is not fixed|
||Relationship added||has duplicate 0002119|
|2004-09-05 10:47||remkobonte||Note Added: 0005192|
|2004-09-10 12:01||remkobonte||Status||new => assigned|
|2004-09-10 12:01||remkobonte||Assigned To||=> remkobonte|
|2004-09-10 12:02||remkobonte||Relationship added||related to 0002128|
|2004-09-17 16:50||remkobonte||Relationship added||has duplicate 0002155|
|2004-09-17 17:01||remkobonte||Note Added: 0005238|
||Note Added: 0005241|
|2004-09-23 15:49||remkobonte||Note Added: 0005253|
|2004-09-23 15:50||remkobonte||Status||assigned => feedback|
||Note Added: 0005254|
|2004-12-21 18:30||remkobonte||Relationship added||has duplicate 0002411|
|2004-12-21 18:31||remkobonte||Relationship added||has duplicate 0002409|
|2005-02-04 04:06||obones||Status||feedback => closed|
|2005-02-04 04:06||obones||Note Added: 0006394|