wxAUI Improvements
wxAUI Improvements
I don't know how many follow the Dev mailing list, but someone there has been releasing a "fixed" version of the wxAUI library.
Currently (s)he has done the following
Visual Studio 2005 style docking
http://www.kirix.com/forums/viewtopic.php?f=16&t=596
Dock and Pane Resizing
http://www.kirix.com/forums/viewtopic.php?f=16&t=582
Patch concerning dock resizing
http://www.kirix.com/forums/viewtopic.php?f=16&t=610
Patch to effect wxAuiToolBar orientation switch
http://www.kirix.com/forums/viewtopic.php?f=16&t=641
AUI: Core dump when loading a perspective in wxGTK (MSW OK)
http://www.kirix.com/forums/viewtopic.php?f=15&t=627
wxAuiNotebook reordered AdvanceSelection()
http://www.kirix.com/forums/viewtopic.php?f=16&t=617
Vertical Toolbar Docking Issue
http://www.kirix.com/forums/viewtopic.php?f=16&t=181
Patch to show the resize hint on mouse-down in aui
http://trac.wxwidgets.org/ticket/9612
and a second release that included
The Lef / Right and Top / Bottom Docks over draw each other
http://trac.wxwidgets.org/ticket/3516
MinSize() not honoured
http://trac.wxwidgets.org/ticket/3562
Layout problem with wxAUI
http://trac.wxwidgets.org/ticket/3597
resizing children ignores current window size
http://trac.wxwidgets.org/ticket/3908
Resizing panes under Vista does not repaint background
http://trac.wxwidgets.org/ticket/4325
Resize sash resizes in response to click
http://trac.wxwidgets.org/ticket/4547
"illegal" resizing of the AuiPane? (wxPython)
http://trac.wxwidgets.org/ticket/4599
floating wxAUIPane Resize Event doesn't update its position
http://trac.wxwidgets.org/ticket/9773
Download (source and binary for MSW included):
http://www.mediafire.com/file/lmgzjnmmmtz/AUITest2.zip
Obviously I don't want to belittle the work done by the developers of wxAUI, which is itself an excellent docking system, but these patches/fixes do improve it immensely.
The above download contains a windows build of the auitest program allowing developers to appraise the changes.
Currently (s)he has done the following
Visual Studio 2005 style docking
http://www.kirix.com/forums/viewtopic.php?f=16&t=596
Dock and Pane Resizing
http://www.kirix.com/forums/viewtopic.php?f=16&t=582
Patch concerning dock resizing
http://www.kirix.com/forums/viewtopic.php?f=16&t=610
Patch to effect wxAuiToolBar orientation switch
http://www.kirix.com/forums/viewtopic.php?f=16&t=641
AUI: Core dump when loading a perspective in wxGTK (MSW OK)
http://www.kirix.com/forums/viewtopic.php?f=15&t=627
wxAuiNotebook reordered AdvanceSelection()
http://www.kirix.com/forums/viewtopic.php?f=16&t=617
Vertical Toolbar Docking Issue
http://www.kirix.com/forums/viewtopic.php?f=16&t=181
Patch to show the resize hint on mouse-down in aui
http://trac.wxwidgets.org/ticket/9612
and a second release that included
The Lef / Right and Top / Bottom Docks over draw each other
http://trac.wxwidgets.org/ticket/3516
MinSize() not honoured
http://trac.wxwidgets.org/ticket/3562
Layout problem with wxAUI
http://trac.wxwidgets.org/ticket/3597
resizing children ignores current window size
http://trac.wxwidgets.org/ticket/3908
Resizing panes under Vista does not repaint background
http://trac.wxwidgets.org/ticket/4325
Resize sash resizes in response to click
http://trac.wxwidgets.org/ticket/4547
"illegal" resizing of the AuiPane? (wxPython)
http://trac.wxwidgets.org/ticket/4599
floating wxAUIPane Resize Event doesn't update its position
http://trac.wxwidgets.org/ticket/9773
Download (source and binary for MSW included):
http://www.mediafire.com/file/lmgzjnmmmtz/AUITest2.zip
Obviously I don't want to belittle the work done by the developers of wxAUI, which is itself an excellent docking system, but these patches/fixes do improve it immensely.
The above download contains a windows build of the auitest program allowing developers to appraise the changes.
Follow the development of my screenplay authoring program at http://wxscreenplaywriter.blogspot.com/
-
- Knows some wx things
- Posts: 31
- Joined: Fri Dec 08, 2006 10:49 pm
- Location: Ukraine
- Contact:
I've made some corrections and fixes for wx 2.8.9/mingw/gcc 4.3 to make compiler happy
But I have one issue - I can't drag wxAuiToolbar when it is added without ToolbarPane() in AuiInfo. Can someone help me?
Thanx
But I have one issue - I can't drag wxAuiToolbar when it is added without ToolbarPane() in AuiInfo. Can someone help me?
Thanx
- Attachments
-
- wx289_aui_all_patched.7z
- Updated sources to compile against wx 2.8.9/mingw/4.x
- (96.97 KiB) Downloaded 490 times
Thanks for announcing my work.NinjaNL wrote:I don't know how many follow the Dev mailing list, but someone there has been releasing a "fixed" version of the wxAUI library.
Could you tell me why you removed some includes? Unfortunately It makes my compiler unhappy.madnut.ua wrote:I've made some corrections and fixes for wx 2.8.9/mingw/gcc 4.3 to make compiler happy
At least the following files are essential on wxWidgets 2.9.0 and Visual Studio 2008.
auibook.cpp: "wx/renderer.h"
dockinfo.cpp: "wx/msw/dc.h"
auibar.cpp: "wx/dcbuffer.h" (not in precomp!)
Sorry, I do not understand what you mean.madnut.ua wrote:But I have one issue - I can't drag wxAuiToolbar when it is added without ToolbarPane() in AuiInfo. Can someone help me?
-
- Knows some wx things
- Posts: 31
- Joined: Fri Dec 08, 2006 10:49 pm
- Location: Ukraine
- Contact:
jjn,
Thanks for correcting my updates.
As for issue, try to add the following example into your code and then begin drag added pane using gripper:
It doesn't work for me - pane is unmovable. Could you help with this?
Thanks for correcting my updates.
As for issue, try to add the following example into your code and then begin drag added pane using gripper:
Code: Select all
m_pToolBar = new wxAuiToolBar(this, CTRL_TOOLBAR_ID, wxDefaultPosition, wxDefaultSize);
--cut--
m_AuiManager.AddPane(m_pToolBar, wxAuiPaneInfo().Name(_("Test")).CaptionVisible(false).Top().Position(1).Row(1).CloseButton(false).Gripper(true));
-
- Knows some wx things
- Posts: 31
- Joined: Fri Dec 08, 2006 10:49 pm
- Location: Ukraine
- Contact:
Please, find my ugly fix for that issue with dragging wxAuiToolbar as ordinary frame not toolbar. Pls, let me know your thoughts and suggestions for better implementation)
- Attachments
-
- wx289_aui_all_patched.7z
- (96.99 KiB) Downloaded 338 times
Hmm. Even on the official 2.8.9, this code seems not to work.madnut.ua wrote:Code: Select all
m_pToolBar = new wxAuiToolBar(this, CTRL_TOOLBAR_ID, wxDefaultPosition, wxDefaultSize); --cut-- m_AuiManager.AddPane(m_pToolBar, wxAuiPaneInfo().Name(_("Test")).CaptionVisible(false).Top().Position(1).Row(1).CloseButton(false).Gripper(true));
Do you have any reasons why you don't use ToolbarPane?
It surely works. (not very smart, though )madnut.ua wrote:Please, find my ugly fix for that issue with dragging wxAuiToolbar as ordinary frame not toolbar. Pls, let me know your thoughts and suggestions for better implementation)
By the way, could you use diff for small patches, please?
-
- Knows some wx things
- Posts: 31
- Joined: Fri Dec 08, 2006 10:49 pm
- Location: Ukraine
- Contact:
Without ToolbarPane I can move my toolbar everywhere, not only in fixed placements specified for toolbar.Do you have any reasons why you don't use ToolbarPane?
I use one main toolbar with ToolbarPane for standard buttons and one additional toolbar without ToolbarPane for some specified functionality (e.g. displaying file path or navigation buttons). Ommiting ToolbarPane gives me more ways in GUI layout customization
Sure, no problem.It surely works. (not very smart, though )
By the way, could you use diff for small patches, please?
That were a quickfixes, and I hadn't planned to make any changes in code, but I had)
Anyway, thanks for your work on this mod!
I think this is by design. Toolbar panes have their own region outside of the managed frames/panels area.madnut.ua wrote:But I have one issue - I can't drag wxAuiToolbar when it is added without ToolbarPane() in AuiInfo. Can someone help me?
If you need to have a floating/dragging toolbar, then you have to allow aui to address it as a toolbar.
What you are attempting to do is add a toolbar as any other control. This isn't allowed, try adding a toolbar to a dialog, same result (more or less).
Follow the development of my screenplay authoring program at http://wxscreenplaywriter.blogspot.com/
-
- Knows some wx things
- Posts: 31
- Joined: Fri Dec 08, 2006 10:49 pm
- Location: Ukraine
- Contact:
It works well for wxToolbar and wx 2.8.8NinjaNL wrote:I think this is by design. Toolbar panes have their own region outside of the managed frames/panels area.madnut.ua wrote:But I have one issue - I can't drag wxAuiToolbar when it is added without ToolbarPane() in AuiInfo. Can someone help me?
If you need to have a floating/dragging toolbar, then you have to allow aui to address it as a toolbar.
What you are attempting to do is add a toolbar as any other control. This isn't allowed, try adding a toolbar to a dialog, same result (more or less).
As for wx 2.8.9 and wxAuiToolbar is works buggy.
I understand that it perhaps undocumented feature/bug, but it very useful for me
I used this patches on my programm with tabbed MDI frame.
I find this problems:
1. Create wxAuiMDIParentFrame crashed programm, because in wxAuiNotebook::Create(...) --> wxControl::Create --> wxControl::Create --> wxControlContainer::AcceptsFocus(), but member wxControl::m_winParent not initialized yet. Needed move code "m_container.SetContainerWindow(this);" from wxAuiNotebook::InitNotebook to wxAuiNotebook constructors.
2. Deleting wxAuiMDIParentFrame crashed programm, because twice try delete wxAuiDockingGuide objects, in ~wxAuiMDIClientWindow() --> DestroyChildren and ~wxAuiManager() --> DestroyGuideWindows(). I replaced DestroyChildren in
~wxAuiMDIClientWindow() to code:
3. If set wxAUI_TB_OVERFLOW for wxAuiToolbar with checked item, then dropdown item list produced assert dialog.
I added next checkup to wxAuiDefaultToolBarArt::ShowDropDown
I find this problems:
1. Create wxAuiMDIParentFrame crashed programm, because in wxAuiNotebook::Create(...) --> wxControl::Create --> wxControl::Create --> wxControlContainer::AcceptsFocus(), but member wxControl::m_winParent not initialized yet. Needed move code "m_container.SetContainerWindow(this);" from wxAuiNotebook::InitNotebook to wxAuiNotebook constructors.
2. Deleting wxAuiMDIParentFrame crashed programm, because twice try delete wxAuiDockingGuide objects, in ~wxAuiMDIClientWindow() --> DestroyChildren and ~wxAuiManager() --> DestroyGuideWindows(). I replaced DestroyChildren in
~wxAuiMDIClientWindow() to code:
Code: Select all
wxAuiMDIClientWindow::~wxAuiMDIClientWindow()
{
// DestroyChildren();
// Because wxAuiDockingGuide object freeing in wxAuiManager destructor they skipped
wxWindowList::compatibility_iterator node, prev_node;
prev_node = GetChildren().GetLast();
for ( ;; )
{
node = prev_node;
if ( !node )
break;
prev_node = node->GetPrevious();
wxWindow *child = node->GetData();
if(child->IsKindOf(CLASSINFO(wxAuiDockingGuide)))
continue;
delete child;
wxASSERT_MSG( !GetChildren().Find(child),
wxT("child didn't remove itself using RemoveChild()") );
}
}
I added next checkup to wxAuiDefaultToolBarArt::ShowDropDown
Code: Select all
for (i = 0; i < count; ++i)
{
wxAuiToolBarItem& item = items.Item(i);
if (item.GetKind() != wxITEM_SEPARATOR)
{
wxString text = item.GetShortHelp();
if (text.empty())
text = item.GetLabel();
if (text.empty())
text = wxT(" ");
wxMenuItem* m = new wxMenuItem(&menuPopup, item.GetId(), text, item.GetShortHelp(), item.GetKind());
m->SetBitmap(item.GetBitmap());
menuPopup.Append(m);
items_added++;
}
else if (item.GetKind() == wxITEM_SEPARATOR)
{
if (items_added > 0)
menuPopup.AppendSeparator();
}
}
Last edited by nikkov on Fri Oct 03, 2008 4:54 am, edited 1 time in total.
Thanks for reporting. I'll fix it in the next release.nikkov wrote:I used this patches on my programm with tabbed MDI frame.
I find this problems:
1. Create wxAuiMDIParentFrame crashed programm, because in wxAuiNotebook::Create(...) --> wxControl::Create --> wxControl::Create --> wxControlContainer::AcceptsFocus(), but member wxControl::m_winParent not initialized yet. Needed move code "m_container.SetContainerWindow(this);" from wxAuiNotebook::InitNotebook to wxAuiNotebook constructors.
2. Deleting wxAuiMDIParentFrame crashed programm, because twice try delete wxAuiDockingGuide objects, in ~wxAuiMDIClientWindow() --> DestroyChildren and ~wxAuiManager() --> DestroyGuideWindows(). I replaced DestroyChildren in
~wxAuiMDIClientWindow() to code:
About the second problem, I think that the managers of other than the main frame should not have guide/hint windows.
I noticed that DestroyChildren() is not necessary at all.nikkov wrote:2. Deleting wxAuiMDIParentFrame crashed programm, because twice try delete wxAuiDockingGuide objects, in ~wxAuiMDIClientWindow() --> DestroyChildren and ~wxAuiManager() --> DestroyGuideWindows(). I replaced DestroyChildren in
~wxAuiMDIClientWindow() to code:
It was an old bug of wxAUI. When I integrated the patch of VS2005 docking, I have brought it back by mistake. So simply remove it!
I applied it.nikkov wrote:3. If set wxAUI_TB_OVERFLOW for wxAuiToolbar with checked item, then dropdown item list produced assert dialog.
I added next checkup to wxAuiDefaultToolBarArt::ShowDropDown
This is the third test release.
I integrated someone's work that allows notebook docking. When you drag a floating window on another pane, you'll see a new guide icon in the center. You can get a tabbed pane by dropping the window there.
Also, many problems are fixed, including these:
Don't hide floating panels when we maximize some other panel
http://trac.wxwidgets.org/ticket/4066
wxAUINotebook incorrect ALLOW_ACTIVE_PANE handling
http://trac.wxwidgets.org/ticket/4361
page changing veto doesn't work, (patch supplied)
http://trac.wxwidgets.org/ticket/4518
Show and DoShow are mixed around in wxAuiMDIChildFrame
http://trac.wxwidgets.org/ticket/4567
wxAuiManager & wxToolBar - ToolBar Of Size Zero
http://trac.wxwidgets.org/ticket/9724
AiuNotebook doesn't behave properly like a container as far as...
http://trac.wxwidgets.org/ticket/9911
I integrated someone's work that allows notebook docking. When you drag a floating window on another pane, you'll see a new guide icon in the center. You can get a tabbed pane by dropping the window there.
Also, many problems are fixed, including these:
Don't hide floating panels when we maximize some other panel
http://trac.wxwidgets.org/ticket/4066
wxAUINotebook incorrect ALLOW_ACTIVE_PANE handling
http://trac.wxwidgets.org/ticket/4361
page changing veto doesn't work, (patch supplied)
http://trac.wxwidgets.org/ticket/4518
Show and DoShow are mixed around in wxAuiMDIChildFrame
http://trac.wxwidgets.org/ticket/4567
wxAuiManager & wxToolBar - ToolBar Of Size Zero
http://trac.wxwidgets.org/ticket/9724
AiuNotebook doesn't behave properly like a container as far as...
http://trac.wxwidgets.org/ticket/9911
- Attachments
-
- AUITest3.zip
- wxAUI Improvements Test Release 3
- (148.49 KiB) Downloaded 514 times
What no executable? damn I'll have to build it myself.jjn wrote:This is the third test release.
Follow the development of my screenplay authoring program at http://wxscreenplaywriter.blogspot.com/
Because this forum restricts the file size to 500KB...
Anyway I uploaded the exe here.
http://www.mediafire.com/file/g4zuj4nj3 ... st3exe.zip
Anyway I uploaded the exe here.
http://www.mediafire.com/file/g4zuj4nj3 ... st3exe.zip