summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--ChangeLog9
-rw-r--r--ChangeLog.pre-2-109
-rw-r--r--ChangeLog.pre-2-89
-rw-r--r--docs/reference/ChangeLog5
-rw-r--r--docs/reference/gtk/tmpl/gtkuimanager.sgml49
-rw-r--r--gtk/gtkuimanager.c20
6 files changed, 79 insertions, 22 deletions
diff --git a/ChangeLog b/ChangeLog
index 7d989873da..f7639c6057 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,12 @@
+2005-02-08 Matthias Clasen <mclasen@redhat.com>
+
+ * gtk/gtkuimanager.c (start_element_handler): Accept
+ the "expand" attribute and set a flag in the node if it
+ is set to "true".
+ (update_node): If the expand flag is set, make separator
+ toolitems non-drawn and expanding. (#166489, Christian Persch)
+
+
2005-02-05 Hans Breuer <hans@breuer.org>
* gdk/makefile.msc gdk/win32/makefile.msc gtk/makefile.msc.in :
diff --git a/ChangeLog.pre-2-10 b/ChangeLog.pre-2-10
index 7d989873da..f7639c6057 100644
--- a/ChangeLog.pre-2-10
+++ b/ChangeLog.pre-2-10
@@ -1,3 +1,12 @@
+2005-02-08 Matthias Clasen <mclasen@redhat.com>
+
+ * gtk/gtkuimanager.c (start_element_handler): Accept
+ the "expand" attribute and set a flag in the node if it
+ is set to "true".
+ (update_node): If the expand flag is set, make separator
+ toolitems non-drawn and expanding. (#166489, Christian Persch)
+
+
2005-02-05 Hans Breuer <hans@breuer.org>
* gdk/makefile.msc gdk/win32/makefile.msc gtk/makefile.msc.in :
diff --git a/ChangeLog.pre-2-8 b/ChangeLog.pre-2-8
index 7d989873da..f7639c6057 100644
--- a/ChangeLog.pre-2-8
+++ b/ChangeLog.pre-2-8
@@ -1,3 +1,12 @@
+2005-02-08 Matthias Clasen <mclasen@redhat.com>
+
+ * gtk/gtkuimanager.c (start_element_handler): Accept
+ the "expand" attribute and set a flag in the node if it
+ is set to "true".
+ (update_node): If the expand flag is set, make separator
+ toolitems non-drawn and expanding. (#166489, Christian Persch)
+
+
2005-02-05 Hans Breuer <hans@breuer.org>
* gdk/makefile.msc gdk/win32/makefile.msc gtk/makefile.msc.in :
diff --git a/docs/reference/ChangeLog b/docs/reference/ChangeLog
index 56308930ca..ae018f88f7 100644
--- a/docs/reference/ChangeLog
+++ b/docs/reference/ChangeLog
@@ -1,3 +1,8 @@
+2005-02-08 Matthias Clasen <mclasen@redhat.com>
+
+ * gtk/tmpl/gtkuimanager.sgml: Mention the expanding
+ toolbar separators.
+
2005-02-03 Matthias Clasen <mclasen@redhat.com>
* gtk/gtk-sections.txt: Add gtk_stock_set_translate_func.
diff --git a/docs/reference/gtk/tmpl/gtkuimanager.sgml b/docs/reference/gtk/tmpl/gtkuimanager.sgml
index 9f82abf6d9..cda5c00fba 100644
--- a/docs/reference/gtk/tmpl/gtkuimanager.sgml
+++ b/docs/reference/gtk/tmpl/gtkuimanager.sgml
@@ -25,27 +25,28 @@ roughly described by the following DTD.
&lt;!ELEMENT toolitem EMPTY &gt;
&lt;!ELEMENT separator EMPTY &gt;
&lt;!ELEMENT accelerator EMPTY &gt;
-&lt;!ATTLIST menubar name &num;IMPLIED
- action &num;IMPLIED &gt;
-&lt;!ATTLIST toolbar name &num;IMPLIED
- action &num;IMPLIED &gt;
-&lt;!ATTLIST popup name &num;IMPLIED
- action &num;IMPLIED &gt;
-&lt;!ATTLIST placeholder name &num;IMPLIED
- action &num;IMPLIED &gt;
-&lt;!ATTLIST separator name &num;IMPLIED
- action &num;IMPLIED &gt;
-&lt;!ATTLIST menu name &num;IMPLIED
- action &num;REQUIRED
- position (top|bot) &num;IMPLIED &gt;
-&lt;!ATTLIST menuitem name &num;IMPLIED
- action &num;REQUIRED
- position (top|bot) &num;IMPLIED &gt;
-&lt;!ATTLIST toolitem name &num;IMPLIED
- action &num;REQUIRED
- position (top|bot) &num;IMPLIED &gt;
-&lt;!ATTLIST accelerator name &num;IMPLIED
- action &num;REQUIRED &gt;
+&lt;!ATTLIST menubar name &num;IMPLIED
+ action &num;IMPLIED &gt;
+&lt;!ATTLIST toolbar name &num;IMPLIED
+ action &num;IMPLIED &gt;
+&lt;!ATTLIST popup name &num;IMPLIED
+ action &num;IMPLIED &gt;
+&lt;!ATTLIST placeholder name &num;IMPLIED
+ action &num;IMPLIED &gt;
+&lt;!ATTLIST separator name &num;IMPLIED
+ action &num;IMPLIED
+ expand (true|false) &num;IMPLIED &gt;
+&lt;!ATTLIST menu name &num;IMPLIED
+ action &num;REQUIRED
+ position (top|bot) &num;IMPLIED &gt;
+&lt;!ATTLIST menuitem name &num;IMPLIED
+ action &num;REQUIRED
+ position (top|bot) &num;IMPLIED &gt;
+&lt;!ATTLIST toolitem name &num;IMPLIED
+ action &num;REQUIRED
+ position (top|bot) &num;IMPLIED &gt;
+&lt;!ATTLIST accelerator name &num;IMPLIED
+ action &num;REQUIRED &gt;
</programlisting>
There are some additional restrictions beyond those specified in the
DTD, e.g. every toolitem must have a toolbar in its anchestry and
@@ -166,6 +167,12 @@ is a useful feature, since the merging of UI elements from multiple sources
can make it hard or impossible to determine in advance whether a separator
will end up in such an unfortunate position.
</para>
+
+<para>
+For separators in toolbars, you can set <literal>expand="true"</literal> to
+turn them from a small, visible separator to an expanding, invisible one.
+Toolitems following an expanding separator are effectively right-aligned.
+</para>
</refsect2>
<refsect2>
<title>Empty Menus</title>
diff --git a/gtk/gtkuimanager.c b/gtk/gtkuimanager.c
index 439cfc8ec3..a2dc4ac611 100644
--- a/gtk/gtkuimanager.c
+++ b/gtk/gtkuimanager.c
@@ -76,6 +76,7 @@ struct _Node {
GList *uifiles;
guint dirty : 1;
+ guint expand : 1; /* used for separators */
};
#define GTK_UI_MANAGER_GET_PRIVATE(obj) (G_TYPE_INSTANCE_GET_PRIVATE ((obj), GTK_TYPE_UI_MANAGER, GtkUIManagerPrivate))
@@ -1102,6 +1103,7 @@ start_element_handler (GMarkupParseContext *context,
const gchar *action;
GQuark action_quark;
gboolean top;
+ gboolean expand;
gboolean raise_error = TRUE;
@@ -1125,6 +1127,10 @@ start_element_handler (GMarkupParseContext *context,
{
top = !strcmp (attribute_values[i], "top");
}
+ else if (!strcmp (attribute_names[i], "expand"))
+ {
+ expand = !strcmp (attribute_values[i], "true");
+ }
else
{
gint line_number, char_number;
@@ -1282,6 +1288,8 @@ start_element_handler (GMarkupParseContext *context,
NODE_TYPE_SEPARATOR,
TRUE, top);
+ NODE_INFO (node)->expand = expand;
+
if (NODE_INFO (node)->action_name == 0)
NODE_INFO (node)->action_name = action_quark;
@@ -2467,6 +2475,7 @@ update_node (GtkUIManager *self,
{
GtkWidget *toolbar;
gint pos;
+ gint separator_mode;
if (GTK_IS_SEPARATOR_TOOL_ITEM (info->proxy))
{
@@ -2484,9 +2493,18 @@ update_node (GtkUIManager *self,
g_object_ref (info->proxy);
gtk_object_sink (GTK_OBJECT (info->proxy));
gtk_widget_set_no_show_all (info->proxy, TRUE);
+ if (info->expand)
+ {
+ gtk_tool_item_set_expand (GTK_TOOL_ITEM (item), TRUE);
+ gtk_separator_tool_item_set_draw (item, FALSE);
+ separator_mode = SEPARATOR_MODE_VISIBLE;
+ }
+ else
+ separator_mode = SEPARATOR_MODE_SMART;
+
g_object_set_data (G_OBJECT (info->proxy),
"gtk-separator-mode",
- GINT_TO_POINTER (SEPARATOR_MODE_SMART));
+ GINT_TO_POINTER (separator_mode));
gtk_widget_show (info->proxy);
}
}