forked from AuroraMiddleware/gtk
Don't crash if a node has no name. (start_element_handler): Accept
2004-04-13 Matthias Clasen <mclasen@redhat.com> * gtk/gtkuimanager.c (get_child_node): Don't crash if a node has no name. (start_element_handler): Accept separators without unique names. (#133302, Anders Carlsson) * gtk/gtkuimanager.c (node_remove_ui_reference): Don't leak list nodes. (#138862, Morten Welinder)
This commit is contained in:
parent
5854707bd9
commit
157943b584
@ -1,5 +1,10 @@
|
|||||||
2004-04-13 Matthias Clasen <mclasen@redhat.com>
|
2004-04-13 Matthias Clasen <mclasen@redhat.com>
|
||||||
|
|
||||||
|
* gtk/gtkuimanager.c (get_child_node): Don't crash if a node
|
||||||
|
has no name.
|
||||||
|
(start_element_handler): Accept separators without unique
|
||||||
|
names. (#133302, Anders Carlsson)
|
||||||
|
|
||||||
* gtk/gtkactiongroup.c (gtk_action_group_add_action): Document
|
* gtk/gtkactiongroup.c (gtk_action_group_add_action): Document
|
||||||
possible accelerator gotcha when using this function. (#139641,
|
possible accelerator gotcha when using this function. (#139641,
|
||||||
Christian Persch)
|
Christian Persch)
|
||||||
|
@ -1,5 +1,10 @@
|
|||||||
2004-04-13 Matthias Clasen <mclasen@redhat.com>
|
2004-04-13 Matthias Clasen <mclasen@redhat.com>
|
||||||
|
|
||||||
|
* gtk/gtkuimanager.c (get_child_node): Don't crash if a node
|
||||||
|
has no name.
|
||||||
|
(start_element_handler): Accept separators without unique
|
||||||
|
names. (#133302, Anders Carlsson)
|
||||||
|
|
||||||
* gtk/gtkactiongroup.c (gtk_action_group_add_action): Document
|
* gtk/gtkactiongroup.c (gtk_action_group_add_action): Document
|
||||||
possible accelerator gotcha when using this function. (#139641,
|
possible accelerator gotcha when using this function. (#139641,
|
||||||
Christian Persch)
|
Christian Persch)
|
||||||
|
@ -1,5 +1,10 @@
|
|||||||
2004-04-13 Matthias Clasen <mclasen@redhat.com>
|
2004-04-13 Matthias Clasen <mclasen@redhat.com>
|
||||||
|
|
||||||
|
* gtk/gtkuimanager.c (get_child_node): Don't crash if a node
|
||||||
|
has no name.
|
||||||
|
(start_element_handler): Accept separators without unique
|
||||||
|
names. (#133302, Anders Carlsson)
|
||||||
|
|
||||||
* gtk/gtkactiongroup.c (gtk_action_group_add_action): Document
|
* gtk/gtkactiongroup.c (gtk_action_group_add_action): Document
|
||||||
possible accelerator gotcha when using this function. (#139641,
|
possible accelerator gotcha when using this function. (#139641,
|
||||||
Christian Persch)
|
Christian Persch)
|
||||||
|
@ -1,5 +1,10 @@
|
|||||||
2004-04-13 Matthias Clasen <mclasen@redhat.com>
|
2004-04-13 Matthias Clasen <mclasen@redhat.com>
|
||||||
|
|
||||||
|
* gtk/gtkuimanager.c (get_child_node): Don't crash if a node
|
||||||
|
has no name.
|
||||||
|
(start_element_handler): Accept separators without unique
|
||||||
|
names. (#133302, Anders Carlsson)
|
||||||
|
|
||||||
* gtk/gtkactiongroup.c (gtk_action_group_add_action): Document
|
* gtk/gtkactiongroup.c (gtk_action_group_add_action): Document
|
||||||
possible accelerator gotcha when using this function. (#139641,
|
possible accelerator gotcha when using this function. (#139641,
|
||||||
Christian Persch)
|
Christian Persch)
|
||||||
|
@ -1,5 +1,10 @@
|
|||||||
2004-04-13 Matthias Clasen <mclasen@redhat.com>
|
2004-04-13 Matthias Clasen <mclasen@redhat.com>
|
||||||
|
|
||||||
|
* gtk/gtkuimanager.c (get_child_node): Don't crash if a node
|
||||||
|
has no name.
|
||||||
|
(start_element_handler): Accept separators without unique
|
||||||
|
names. (#133302, Anders Carlsson)
|
||||||
|
|
||||||
* gtk/gtkactiongroup.c (gtk_action_group_add_action): Document
|
* gtk/gtkactiongroup.c (gtk_action_group_add_action): Document
|
||||||
possible accelerator gotcha when using this function. (#139641,
|
possible accelerator gotcha when using this function. (#139641,
|
||||||
Christian Persch)
|
Christian Persch)
|
||||||
|
@ -1,3 +1,7 @@
|
|||||||
|
2004-04-13 Matthias Clasen <mclasen@redhat.com>
|
||||||
|
|
||||||
|
* gtk/tmpl/gtkuimanager.sgml: Some corrections.
|
||||||
|
|
||||||
2004-04-13 Federico Mena Quintero <federico@ximian.com>
|
2004-04-13 Federico Mena Quintero <federico@ximian.com>
|
||||||
|
|
||||||
* gtk/tmpl/gtkfilechooser.sgml: Typo fix.
|
* gtk/tmpl/gtkfilechooser.sgml: Typo fix.
|
||||||
|
@ -29,6 +29,7 @@ roughly described by the following DTD.
|
|||||||
<!ATTLIST toolbar name #IMPLIED >
|
<!ATTLIST toolbar name #IMPLIED >
|
||||||
<!ATTLIST popup name #IMPLIED >
|
<!ATTLIST popup name #IMPLIED >
|
||||||
<!ATTLIST placeholder name #IMPLIED >
|
<!ATTLIST placeholder name #IMPLIED >
|
||||||
|
<!ATTLIST separator name #IMPLIED >
|
||||||
<!ATTLIST menu name #IMPLIED
|
<!ATTLIST menu name #IMPLIED
|
||||||
action #REQUIRED
|
action #REQUIRED
|
||||||
position (top|bot) #IMPLIED >
|
position (top|bot) #IMPLIED >
|
||||||
@ -126,7 +127,7 @@ The most remarkable feature of #GtkUIManager is that it can overlay a set
|
|||||||
of menuitems and toolitems over another one, and demerge them later.
|
of menuitems and toolitems over another one, and demerge them later.
|
||||||
</para>
|
</para>
|
||||||
<para>
|
<para>
|
||||||
Merging is done based on the name of the XML elements. Each element is
|
Merging is done based on the names of the XML elements. Each element is
|
||||||
identified by a path which consists of the names of its anchestors, separated
|
identified by a path which consists of the names of its anchestors, separated
|
||||||
by slashes. For example, the menuitem named "Left" in the example above
|
by slashes. For example, the menuitem named "Left" in the example above
|
||||||
has the path <literal>/ui/menubar/JustifyMenu/Left</literal> and the
|
has the path <literal>/ui/menubar/JustifyMenu/Left</literal> and the
|
||||||
|
@ -824,7 +824,8 @@ get_child_node (GtkUIManager *self,
|
|||||||
{
|
{
|
||||||
for (child = parent->children; child != NULL; child = child->next)
|
for (child = parent->children; child != NULL; child = child->next)
|
||||||
{
|
{
|
||||||
if (strlen (NODE_INFO (child)->name) == childname_length &&
|
if (NODE_INFO (child)->name &&
|
||||||
|
strlen (NODE_INFO (child)->name) == childname_length &&
|
||||||
!strncmp (NODE_INFO (child)->name, childname, childname_length))
|
!strncmp (NODE_INFO (child)->name, childname, childname_length))
|
||||||
{
|
{
|
||||||
/* if undecided about node type, set it */
|
/* if undecided about node type, set it */
|
||||||
@ -1215,15 +1216,24 @@ start_element_handler (GMarkupParseContext *context,
|
|||||||
!strcmp (element_name, "separator"))
|
!strcmp (element_name, "separator"))
|
||||||
{
|
{
|
||||||
GNode *node;
|
GNode *node;
|
||||||
|
gint length;
|
||||||
|
|
||||||
if (ctx->state == STATE_TOOLBAR)
|
if (ctx->state == STATE_TOOLBAR)
|
||||||
ctx->state = STATE_TOOLITEM;
|
ctx->state = STATE_TOOLITEM;
|
||||||
else
|
else
|
||||||
ctx->state = STATE_MENUITEM;
|
ctx->state = STATE_MENUITEM;
|
||||||
|
if (!strcmp (node_name, "separator"))
|
||||||
|
{
|
||||||
|
node_name = NULL;
|
||||||
|
length = -1;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
length = strlen (node_name);
|
||||||
node = get_child_node (self, ctx->current,
|
node = get_child_node (self, ctx->current,
|
||||||
node_name, strlen (node_name),
|
node_name, length,
|
||||||
NODE_TYPE_SEPARATOR,
|
NODE_TYPE_SEPARATOR,
|
||||||
TRUE, top);
|
TRUE, top);
|
||||||
|
|
||||||
if (NODE_INFO (node)->action_name == 0)
|
if (NODE_INFO (node)->action_name == 0)
|
||||||
NODE_INFO (node)->action_name = action_quark;
|
NODE_INFO (node)->action_name = action_quark;
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user