Codejock Forums Homepage
Forum Home Forum Home > Codejock Products > Visual C++ MFC > Docking Pane
  New Posts New Posts RSS Feed - problems with nested pane managers
  FAQ FAQ  Forum Search   Events   Register Register  Login Login

problems with nested pane managers

 Post Reply Post Reply
Author
Message
adrien View Drop Down
Senior Member
Senior Member


Joined: 30 April 2007
Location: New Zealand
Status: Offline
Points: 449
Post Options Post Options   Thanks (0) Thanks(0)   Quote adrien Quote  Post ReplyReply Direct Link To This Post Topic: problems with nested pane managers
    Posted: 02 March 2011 at 8:50pm
We have a couple of places in our code where we have a pane manager with multiple docking panes all inside another pane in another pane manager.

In this case, we're finding several problems with the nested panes.

a. focus changes don't change pane state.

When you click on another window, and an active pane loses focus, the pane header still shows as the active pane.  Even if you click in client areas of other panes within the same pane manager, they don't update the pane active state (e.g. the orange caption bar).

b. show pane never does anything .  Each pane seems to be in its own docking pane container, and so it is the selected pane.  So calling ShowPane on it doesn't do anything except set focus to the contained window.

This is in 13.4.2.

Adrien
Back to Top
Oleg View Drop Down
Admin Group
Admin Group


Joined: 21 May 2003
Location: United States
Status: Offline
Points: 11234
Post Options Post Options   Thanks (0) Thanks(0)   Quote Oleg Quote  Post ReplyReply Direct Link To This Post Posted: 03 March 2011 at 2:42am
Hi,

Check if OnIdleUpdateCmdUI of CXTPDockingPaneManager is called for second panemanager.

If not,  you need manually route it - m_paneManager.SendMessage(WM_IDLEUPDATECMDUI, 0, 0); 
Oleg, Support Team
CODEJOCK SOFTWARE SOLUTIONS
Back to Top
adrien View Drop Down
Senior Member
Senior Member


Joined: 30 April 2007
Location: New Zealand
Status: Offline
Points: 449
Post Options Post Options   Thanks (0) Thanks(0)   Quote adrien Quote  Post ReplyReply Direct Link To This Post Posted: 03 March 2011 at 4:01pm
Hi

where do I route this from?  Does that mean I need to subclass the pane manager for the parent pane or something? 

What messages get sent to panes when this idle processing is done?
Back to Top
adrien View Drop Down
Senior Member
Senior Member


Joined: 30 April 2007
Location: New Zealand
Status: Offline
Points: 449
Post Options Post Options   Thanks (0) Thanks(0)   Quote adrien Quote  Post ReplyReply Direct Link To This Post Posted: 03 March 2011 at 4:18pm
looks like (in the context of pane manager code) WM_IDLEUPDATECMDUI is only sent from RecalcFrameLayout where the site is a frame window.

So this is no use to me.  In my case, there are 3 layers deep of nesting.  

I have a pane manager with 3 panes and a client area.
in that client area is another pane manager with 2 tabs
on one of those tabs there is another pane manager with 3 panes

it's the inner-most one that is not updating.
Back to Top
adrien View Drop Down
Senior Member
Senior Member


Joined: 30 April 2007
Location: New Zealand
Status: Offline
Points: 449
Post Options Post Options   Thanks (0) Thanks(0)   Quote adrien Quote  Post ReplyReply Direct Link To This Post Posted: 03 March 2011 at 4:18pm
p.s. I sub-classed the pane manager and OnIdleUpdateCmdUI is not getting hit, but no surprise, since it's not in a frame.
Back to Top
Oleg View Drop Down
Admin Group
Admin Group


Joined: 21 May 2003
Location: United States
Status: Offline
Points: 11234
Post Options Post Options   Thanks (0) Thanks(0)   Quote Oleg Quote  Post ReplyReply Direct Link To This Post Posted: 04 March 2011 at 6:41am
Hi,

Try catch WM_IDLEUPDATECMDUI in your Client window and pass it to PaneManager
Oleg, Support Team
CODEJOCK SOFTWARE SOLUTIONS
Back to Top
 Post Reply Post Reply
  Share Topic   

Forum Jump Forum Permissions View Drop Down

Forum Software by Web Wiz Forums® version 12.04
Copyright ©2001-2021 Web Wiz Ltd.

This page was generated in 0.156 seconds.