View Issue Details

IDProjectCategoryView StatusLast Update
0001807JEDI VCL00 JVCL Componentspublic2005-02-04 04:06
Reporteruser72Assigned Toremkobonte 
PrioritynormalSeverityfeatureReproducibilityalways
Status closedResolutionopen 
Product Version 
Target VersionFixed in Version 
Summary0001807: JvDocking: docking free floating dock clients to each other disables moving the forms
DescriptionHere'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
TagsNo tags attached.

Relationships

has duplicate 0002119 resolvedremkobonte JvDocking freezes form 
has duplicate 0002155 resolvedremkobonte Docking: Docking client forms together 
has duplicate 0002411 resolvedobones Docking-Crash: Refered to Issue-ID 2409 
has duplicate 0002409 resolvedobones Using Dock-Server/Client: Crash after closing Tap-Form 
related to 0002128 resolvedremkobonte JvDocking - Changing hat runtime 

Activities

remkobonte

2004-09-05 10:47

developer   ~0005192

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:

type
  TComponentAccess = class(TPersistent)
  private
    FOwner: TComponent;
    FName: TComponentName;
    FTag: Longint;
    FComponents: TList;
    FFreeNotifies: TList;
    FDesignInfo: Longint;
    FComponentState: TComponentState;
  end;

constructor TJvDockableForm.Create(AOwner: TComponent);
begin
  inherited Create(AOwner);
  DragKind := dkDock;
  FDockClient := TJvDockClient.Create(Self);
  TComponentAccess(FDockClient).FComponentState :=
    TComponentAccess(FDockClient).FComponentState + [csLoading];
  FDockClient.Loaded;
[..]

remkobonte

2004-09-17 17:01

developer   ~0005238

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.

user72

2004-09-20 06:36

  ~0005241

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)

remkobonte

2004-09-23 15:49

developer   ~0005253

Okay, committed into CVS. Please test it and give feedback.

user72

2004-09-23 23:48

  ~0005254

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.

obones

2005-02-04 04:06

administrator   ~0006394

Please refer to 2411 for details, please create a new one if you think it is not fixed

Issue History

Date Modified Username Field Change
2004-05-27 12:47 user72 New Issue
2004-09-05 06:08 user72 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
2004-09-20 06:36 user72 Note Added: 0005241
2004-09-23 15:49 remkobonte Note Added: 0005253
2004-09-23 15:50 remkobonte Status assigned => feedback
2004-09-23 23:48 user72 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