diff --git a/docs/doxygen/overviews/xrc_format.h b/docs/doxygen/overviews/xrc_format.h
index 00adb8849b..ab672a8882 100644
--- a/docs/doxygen/overviews/xrc_format.h
+++ b/docs/doxygen/overviews/xrc_format.h
@@ -1570,7 +1570,9 @@ A toolbar can have one or more child objects of any wxControl-derived class or
one of two pseudo-classes: @c separator or @c tool.
The @c separator pseudo-class is used to insert separators into the toolbar and
-has neither properties nor children.
+has neither properties nor children. Similarly, the @c space pseudo-class is
+used for stretchable spaces (see wxToolBar::AddStretchableSpace(), new since
+wxWidgets 2.9.1).
The @c tool pseudo-class objects specify toolbar buttons and have the following
properties:
@@ -1619,6 +1621,7 @@ Example:
bar.png
+
-
+
- wxALIGN_CENTER_VERTICAL|wxALL
+ wxEXPAND|wxALL
5
- 300,60
2,2
@@ -116,7 +114,7 @@
-
+
- Just
@@ -141,7 +139,7 @@
- wxALIGN_CENTER_VERTICAL|wxALL
+ wxEXPAND|wxALL
5
@@ -165,6 +163,7 @@
+
1
@@ -181,7 +180,7 @@
-
+
- Just
diff --git a/src/xrc/xh_toolb.cpp b/src/xrc/xh_toolb.cpp
index fc0c19c7b9..bfe713d9ae 100644
--- a/src/xrc/xh_toolb.cpp
+++ b/src/xrc/xh_toolb.cpp
@@ -145,14 +145,19 @@ wxObject *wxToolBarXmlHandler::DoCreateResource()
return m_toolbar; // must return non-NULL
}
- else if (m_class == wxT("separator"))
+ else if (m_class == wxT("separator") || m_class == wxT("space"))
{
if ( !m_toolbar )
{
- ReportError("separator only allowed inside wxToolBar");
+ ReportError("separators only allowed inside wxToolBar");
return NULL;
}
- m_toolbar->AddSeparator();
+
+ if ( m_class == wxT("separator") )
+ m_toolbar->AddSeparator();
+ else
+ m_toolbar->AddStretchableSpace();
+
return m_toolbar; // must return non-NULL
}
@@ -206,6 +211,7 @@ wxObject *wxToolBarXmlHandler::DoCreateResource()
wxControl *control = wxDynamicCast(created, wxControl);
if (!IsOfClass(n, wxT("tool")) &&
!IsOfClass(n, wxT("separator")) &&
+ !IsOfClass(n, wxT("space")) &&
control != NULL)
toolbar->AddControl(control);
}
@@ -232,6 +238,7 @@ bool wxToolBarXmlHandler::CanHandle(wxXmlNode *node)
{
return ((!m_isInside && IsOfClass(node, wxT("wxToolBar"))) ||
(m_isInside && IsOfClass(node, wxT("tool"))) ||
+ (m_isInside && IsOfClass(node, wxT("space"))) ||
(m_isInside && IsOfClass(node, wxT("separator"))));
}