|
|
Home » Developing U++ » UppHub » Docking package (plus examples)
|
|
Re: Docking package (plus examples) [message #19293 is a reply to message #19289] |
Mon, 24 November 2008 18:48 |
Novo
Messages: 1358 Registered: December 2006
|
Ultimate Contributor |
|
|
Thanks.
mrjt wrote on Mon, 24 November 2008 07:27 |
I cannot reproduce any problems with closing tabs (after the X11 fix), could you provide more information?
James
|
I checked in Windows XP Professional, no administrative privileges, svn rev. 671, MSVC 71. Closing tabs crashes in Debug configuration in DockCont.cpp line 383 with memory access violation. This is a call to Layout(). TheIDE debugger is not very helpful in this situation. And the Visual Studio itself cannot open executable.
There is no crash in Optimal configuration. In this case controls just get hidden.
Behavior is different when DockingExample1 runs under TheIDE debugger or standalone. Under debugger ArrayCtrl1 and TreeCtrl1 disappear when I start dragging TreeCtrl2. Looks like uninitialized variable to me.
I ran DockingExample1 under Purify and got only a report about two memory leaks and nothing about reading uninitialized memory. That is strange.
Regards,
Novo
|
|
|
Re: Docking package (plus examples) [message #19295 is a reply to message #19291] |
Mon, 24 November 2008 19:13 |
|
luzr wrote on Mon, 24 November 2008 12:14 |
mrjt wrote on Mon, 24 November 2008 07:27 |
1- Not enough prople having used it to report all of the bugs yet
|
That can be improved by moving it to uppsrc...
Mirek
|
I already moved it in my local repo. Maybe I'll commit it. I waited for complete integration of it with ide (50%) but recently I was simply lack of time. So I'll move it there now if noone raises an objection
|
|
|
|
Re: Docking package (plus examples) [message #19304 is a reply to message #19275] |
Tue, 25 November 2008 06:00 |
Novo
Messages: 1358 Registered: December 2006
|
Ultimate Contributor |
|
|
Oblivion wrote on Sun, 23 November 2008 16:38 | If possible, could you give some details about the assert?
|
Hi Oblivion,
DockCtrlExample + Vista + disabled "Show window contents while dragging" + MSVC71/MSVC9 + SVN rev. 671 + Debug configuration, of course.
Just launch DockCtrlExample and try to close "Dock 4".
DockTabs.cpp line 436. This is a call to WhenActive() in method TabInterface::LeftDown(). Assert happens in Vector::Get(int i). Variable "active" is zero.
I'm also getting memory access violation when trying to dock "Dock 5" control into "Dock 2" control. It happens in Ctrl.cpp line 258, method Ctrl::IsVisible(). It is called from CtrlDraw.cpp line 43 (Ctrl::Refresh()), which is called from DockableCtrl.cpp line 192, DockableCtrl::WindowProc().
I hope that helps.
Regards,
Novo
|
|
|
Re: Docking package (plus examples) [message #19308 is a reply to message #19293] |
Tue, 25 November 2008 13:39 |
mrjt
Messages: 705 Registered: March 2007 Location: London
|
Contributor |
|
|
Novo | I checked in Windows XP Professional, no administrative privileges, svn rev. 671, MSVC 71. Closing tabs crashes in Debug configuration in DockCont.cpp line 383 with memory access violation. This is a call to Layout(). TheIDE debugger is not very helpful in this situation. And the Visual Studio itself cannot open executable.
There is no crash in Optimal configuration. In this case controls just get hidden.
|
Thanks, I've found and fixed the problem. It was introduced with a recent change, and a ctrl was deleting itself by accident. It was the change I made after saying:
Novo | there is also one major addition I need to make which may introduce some new bugs.
| So I'm not that suprised
Novo | Looks like uninitialized variable to me.
|
I didn't get around to updating the svn yesterday, so I would guess that this is the problem I fixed.
Novo | IMHO Docking package is not usable at the moment.
| I've actually been using an older stable version of it for a few months without issues. I do have the advantage of a fixed target platform however.
I've now updated the SVN (rev. 672) with both fixes and changed the code style to better match uppsrc. I don't plan on making any major additions to the code now (unless someone comes up with some amazing new features), so I have no objections to moving it to uppsrc. I'll update and improve the documentation when I get the chance, perhaps later this week.
[Updated on: Tue, 25 November 2008 14:06] Report message to a moderator
|
|
|
|
|
|
|
Re: Docking package (plus examples) [message #19343 is a reply to message #19326] |
Thu, 27 November 2008 20:46 |
Oblivion
Messages: 1093 Registered: August 2007
|
Senior Contributor |
|
|
Novo wrote on Wed, 26 November 2008 19:04 | Hi James,
mrjt wrote on Tue, 25 November 2008 12:52 |
I've fixed the layout issue.
James
|
Thanks a lot!
I checked Docking package with disabled "Show window contents while dragging" in both Windows XP and Vista. Docking is still not working in both these configurations. In opposite, DockCtrlExample (by Ismail Yilmaz) is working correctly in these configurations. I suspect Ismail won�t object stealing some of his code �
Thanks.
|
Hi Novo,
Of course I won't mind. DockCtrl and it's example codes belong to U++ community. Please feel free to use/modify/change and "steal" it
Hi Mrjt,
Don't worry about "beta" testers. Currently, I am testing your Docking package on several OS configurations (ranging from latest (k)ubuntu distros (8.10/KDE 4+ and Gnome 2.24) to XP(SP3)/Vista(SP1)/Win98(SE). I have encountered some "small" bugs, but didn't have the time to make a list of them (by the way, it seems that most of them are already exposed). I will come up with an up-to-date bug list asap.
Regards.
Github page: https://github.com/ismail-yilmaz
upp-components: https://github.com/ismail-yilmaz/upp-components
Bobcat the terminal emulator: https://github.com/ismail-yilmaz/Bobcat
[Updated on: Thu, 27 November 2008 20:47] Report message to a moderator
|
|
|
Re: Docking package (plus examples) [message #19347 is a reply to message #19343] |
Fri, 28 November 2008 07:28 |
Novo
Messages: 1358 Registered: December 2006
|
Ultimate Contributor |
|
|
Hi James,
Thank you very much! I didn't mean to push you. I just wanted to use Docking package and met all these problems. They all used to be major problems for me.
Thanks again!
Regards,
Novo
|
|
|
Re: Docking package (plus examples) [message #19784 is a reply to message #19347] |
Sun, 18 January 2009 20:18 |
Novo
Messages: 1358 Registered: December 2006
|
Ultimate Contributor |
|
|
Is it possible to create hierarchical docking structure?
For example, I'm developing a database application. In database world you have master tables and detail tables (one-to-many relationship). Detail tables can have their detail tables, e.t.c.
It would be nice to be able to represent such hierarchical system as a set of docking controls.
The only limitation I see right now is that the Docking system seems to be a flat system. You have one main DockWindow, and you can dock DockingCtrl everywhere you want. The only hierarchy allowed is nested tabs via NestedTabs() call.
You can doc your controls everywhere in DockWindow.
In my database world I'd like to have a set of DockWindow (or docking containers), which is organized hierarchically, and DockingCtrl linked (and limited) to a particular docking container, so, I may dock detail controls to a particular main control only.
TIA
Regards,
Novo
|
|
|
Re: Docking package (plus examples) [message #19790 is a reply to message #19784] |
Wed, 21 January 2009 12:15 |
mrjt
Messages: 705 Registered: March 2007 Location: London
|
Contributor |
|
|
Novo wrote on Sun, 18 January 2009 19:18 | Is it possible to create hierarchical docking structure?
For example, I'm developing a database application. In database world you have master tables and detail tables (one-to-many relationship). Detail tables can have their detail tables, e.t.c.
It would be nice to be able to represent such hierarchical system as a set of docking controls.
The only limitation I see right now is that the Docking system seems to be a flat system. You have one main DockWindow, and you can dock DockingCtrl everywhere you want. The only hierarchy allowed is nested tabs via NestedTabs() call.
You can doc your controls everywhere in DockWindow.
In my database world I'd like to have a set of DockWindow (or docking containers), which is organized hierarchically, and DockingCtrl linked (and limited) to a particular docking container, so, I may dock detail controls to a particular main control only.
TIA
|
Holy crap, it works! I never tried that because it just seemed too insane to work . You can have a DockWindow as a child of another DockWindow, and you can even have a Dockable DockWindow.
I've attached a modified version of DockingExample1 that shows this (see the DockInit function in main), but it's very simple:
// Add our child docking window!
DockTop(Dockable(subdock, "Child DockWindow").SizeHint(Size(300, 400)));
subdock.DockTop(Dockable(arrayctrl2, "ArrayCtrl 2").SizeHint(Size(300, 200)));
subdock.DockRight(Dockable(treectrl2, "TreeCtrl 2").SizeHint(Size(300, 200)));
[Updated on: Wed, 21 January 2009 12:20] Report message to a moderator
|
|
|
Re: Docking package (plus examples) [message #19801 is a reply to message #19790] |
Thu, 22 January 2009 06:47 |
Novo
Messages: 1358 Registered: December 2006
|
Ultimate Contributor |
|
|
mrjt wrote on Wed, 21 January 2009 06:15 |
Holy crap, it works! I never tried that because it just seemed too insane to work . You can have a DockWindow as a child of another DockWindow, and you can even have a Dockable DockWindow.
I've attached a modified version of DockingExample1 that shows this (see the DockInit function in main), but it's very simple:
// Add our child docking window!
DockTop(Dockable(subdock, "Child DockWindow").SizeHint(Size(300, 400)));
subdock.DockTop(Dockable(arrayctrl2, "ArrayCtrl 2").SizeHint(Size(300, 200)));
subdock.DockRight(Dockable(treectrl2, "TreeCtrl 2").SizeHint(Size(300, 200)));
|
It is just cool !!! Thanks a lot !!! I thought I may have only one TopWindow or DocWindow in my application.
One small problem. When I hide a control, which belongs to subdock (treectrl2, for example), and then make it float using DocManager, treectrl2 takes main DocWindow as a container. So, I cannot dock it back into "Child DockWindow".
Regards,
Novo
|
|
|
|
Re: Docking package (plus examples) [message #19805 is a reply to message #19802] |
Fri, 23 January 2009 05:14 |
Novo
Messages: 1358 Registered: December 2006
|
Ultimate Contributor |
|
|
Thanks.
mrjt wrote on Thu, 22 January 2009 05:12 |
The Docking configration window only applies to a single DockWindow instance.
|
In such case how can I prevent closing of DockableCtrl? Once closed it cannot be accessed any more ...
Regards,
Novo
|
|
|
Re: Docking package (plus examples) [message #19814 is a reply to message #19805] |
Fri, 23 January 2009 13:20 |
mrjt
Messages: 705 Registered: March 2007 Location: London
|
Contributor |
|
|
You have several options here:
- Use the DockWindow::WindowButtons function to remove the close button from all it's child windows
- You can use the Docking config window to manage all of the DockWindows, but only one at a time. Just call DockWindow::DockManager on the window you want to manage.
- Provide some custom method for controlling the windows. The DockMenu class is provided to support custom menus. Or perhaps you could have a toolbar with window icons, and when the user clicking on them would call DockWindow::ActiveDockable to restore it to it's last position. There are many options here.
[Updated on: Fri, 23 January 2009 13:50] Report message to a moderator
|
|
|
|
Goto Forum:
Current Time: Sat May 04 15:20:20 CEST 2024
Total time taken to generate the page: 0.02300 seconds
|
|
|