|
|
@ -45,24 +45,24 @@
|
|
|
|
|
|
|
|
|
|
|
|
typedef enum
|
|
|
|
typedef enum
|
|
|
|
{
|
|
|
|
{
|
|
|
|
GTK_UI_MANAGER_UNDECIDED,
|
|
|
|
NODE_TYPE_UNDECIDED,
|
|
|
|
GTK_UI_MANAGER_ROOT,
|
|
|
|
NODE_TYPE_ROOT,
|
|
|
|
GTK_UI_MANAGER_MENUBAR,
|
|
|
|
NODE_TYPE_MENUBAR,
|
|
|
|
GTK_UI_MANAGER_MENU,
|
|
|
|
NODE_TYPE_MENU,
|
|
|
|
GTK_UI_MANAGER_TOOLBAR,
|
|
|
|
NODE_TYPE_TOOLBAR,
|
|
|
|
GTK_UI_MANAGER_MENU_PLACEHOLDER,
|
|
|
|
NODE_TYPE_MENU_PLACEHOLDER,
|
|
|
|
GTK_UI_MANAGER_TOOLBAR_PLACEHOLDER,
|
|
|
|
NODE_TYPE_TOOLBAR_PLACEHOLDER,
|
|
|
|
GTK_UI_MANAGER_POPUP,
|
|
|
|
NODE_TYPE_POPUP,
|
|
|
|
GTK_UI_MANAGER_MENUITEM,
|
|
|
|
NODE_TYPE_MENUITEM,
|
|
|
|
GTK_UI_MANAGER_TOOLITEM,
|
|
|
|
NODE_TYPE_TOOLITEM,
|
|
|
|
GTK_UI_MANAGER_SEPARATOR,
|
|
|
|
NODE_TYPE_SEPARATOR,
|
|
|
|
} GtkUIManagerNodeType;
|
|
|
|
} NodeType;
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
typedef struct _GtkUIManagerNode GtkUIManagerNode;
|
|
|
|
typedef struct _Node Node;
|
|
|
|
|
|
|
|
|
|
|
|
struct _GtkUIManagerNode {
|
|
|
|
struct _Node {
|
|
|
|
GtkUIManagerNodeType type;
|
|
|
|
NodeType type;
|
|
|
|
|
|
|
|
|
|
|
|
const gchar *name;
|
|
|
|
const gchar *name;
|
|
|
|
|
|
|
|
|
|
|
@ -92,7 +92,7 @@ struct _GtkUIManagerPrivate
|
|
|
|
gboolean add_tearoffs;
|
|
|
|
gboolean add_tearoffs;
|
|
|
|
};
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
|
|
#define NODE_INFO(node) ((GtkUIManagerNode *)node->data)
|
|
|
|
#define NODE_INFO(node) ((Node *)node->data)
|
|
|
|
|
|
|
|
|
|
|
|
typedef struct _NodeUIReference NodeUIReference;
|
|
|
|
typedef struct _NodeUIReference NodeUIReference;
|
|
|
|
|
|
|
|
|
|
|
@ -119,18 +119,18 @@ static GNode *get_child_node (GtkUIManager *self,
|
|
|
|
GNode *parent,
|
|
|
|
GNode *parent,
|
|
|
|
const gchar *childname,
|
|
|
|
const gchar *childname,
|
|
|
|
gint childname_length,
|
|
|
|
gint childname_length,
|
|
|
|
GtkUIManagerNodeType node_type,
|
|
|
|
NodeType node_type,
|
|
|
|
gboolean create,
|
|
|
|
gboolean create,
|
|
|
|
gboolean top);
|
|
|
|
gboolean top);
|
|
|
|
static GNode *get_node (GtkUIManager *self,
|
|
|
|
static GNode *get_node (GtkUIManager *self,
|
|
|
|
const gchar *path,
|
|
|
|
const gchar *path,
|
|
|
|
GtkUIManagerNodeType node_type,
|
|
|
|
NodeType node_type,
|
|
|
|
gboolean create);
|
|
|
|
gboolean create);
|
|
|
|
|
|
|
|
|
|
|
|
static void node_prepend_ui_reference (GtkUIManagerNode *node,
|
|
|
|
static void node_prepend_ui_reference (Node *node,
|
|
|
|
guint merge_id,
|
|
|
|
guint merge_id,
|
|
|
|
GQuark action_quark);
|
|
|
|
GQuark action_quark);
|
|
|
|
static void node_remove_ui_reference (GtkUIManagerNode *node,
|
|
|
|
static void node_remove_ui_reference (Node *node,
|
|
|
|
guint merge_id);
|
|
|
|
guint merge_id);
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
@ -187,7 +187,7 @@ gtk_ui_manager_class_init (GtkUIManagerClass *klass)
|
|
|
|
gobject_class = G_OBJECT_CLASS (klass);
|
|
|
|
gobject_class = G_OBJECT_CLASS (klass);
|
|
|
|
|
|
|
|
|
|
|
|
if (!merge_node_chunk)
|
|
|
|
if (!merge_node_chunk)
|
|
|
|
merge_node_chunk = g_mem_chunk_create (GtkUIManagerNode, 64,
|
|
|
|
merge_node_chunk = g_mem_chunk_create (Node, 64,
|
|
|
|
G_ALLOC_AND_FREE);
|
|
|
|
G_ALLOC_AND_FREE);
|
|
|
|
|
|
|
|
|
|
|
|
gobject_class->finalize = gtk_ui_manager_finalize;
|
|
|
|
gobject_class->finalize = gtk_ui_manager_finalize;
|
|
|
@ -272,7 +272,7 @@ gtk_ui_manager_init (GtkUIManager *self)
|
|
|
|
|
|
|
|
|
|
|
|
merge_id = gtk_ui_manager_new_merge_id (self);
|
|
|
|
merge_id = gtk_ui_manager_new_merge_id (self);
|
|
|
|
node = get_child_node (self, NULL, "ui", 4,
|
|
|
|
node = get_child_node (self, NULL, "ui", 4,
|
|
|
|
GTK_UI_MANAGER_ROOT, TRUE, FALSE);
|
|
|
|
NODE_TYPE_ROOT, TRUE, FALSE);
|
|
|
|
node_prepend_ui_reference (NODE_INFO (node), merge_id, 0);
|
|
|
|
node_prepend_ui_reference (NODE_INFO (node), merge_id, 0);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
@ -516,7 +516,7 @@ gtk_ui_manager_get_widget (GtkUIManager *self,
|
|
|
|
* widget */
|
|
|
|
* widget */
|
|
|
|
gtk_ui_manager_ensure_update (self);
|
|
|
|
gtk_ui_manager_ensure_update (self);
|
|
|
|
|
|
|
|
|
|
|
|
node = get_node (self, path, GTK_UI_MANAGER_UNDECIDED, FALSE);
|
|
|
|
node = get_node (self, path, NODE_TYPE_UNDECIDED, FALSE);
|
|
|
|
|
|
|
|
|
|
|
|
if (node == NULL)
|
|
|
|
if (node == NULL)
|
|
|
|
return NULL;
|
|
|
|
return NULL;
|
|
|
@ -550,7 +550,7 @@ gtk_ui_manager_get_action (GtkUIManager *self,
|
|
|
|
* the action */
|
|
|
|
* the action */
|
|
|
|
gtk_ui_manager_ensure_update (self);
|
|
|
|
gtk_ui_manager_ensure_update (self);
|
|
|
|
|
|
|
|
|
|
|
|
node = get_node (self, path, GTK_UI_MANAGER_UNDECIDED, FALSE);
|
|
|
|
node = get_node (self, path, NODE_TYPE_UNDECIDED, FALSE);
|
|
|
|
|
|
|
|
|
|
|
|
if (node == NULL)
|
|
|
|
if (node == NULL)
|
|
|
|
return NULL;
|
|
|
|
return NULL;
|
|
|
@ -563,15 +563,15 @@ get_child_node (GtkUIManager *self,
|
|
|
|
GNode *parent,
|
|
|
|
GNode *parent,
|
|
|
|
const gchar *childname,
|
|
|
|
const gchar *childname,
|
|
|
|
gint childname_length,
|
|
|
|
gint childname_length,
|
|
|
|
GtkUIManagerNodeType node_type,
|
|
|
|
NodeType node_type,
|
|
|
|
gboolean create,
|
|
|
|
gboolean create,
|
|
|
|
gboolean top)
|
|
|
|
gboolean top)
|
|
|
|
{
|
|
|
|
{
|
|
|
|
GNode *child = NULL;
|
|
|
|
GNode *child = NULL;
|
|
|
|
|
|
|
|
|
|
|
|
g_return_val_if_fail (parent == NULL ||
|
|
|
|
g_return_val_if_fail (parent == NULL ||
|
|
|
|
(NODE_INFO (parent)->type != GTK_UI_MANAGER_MENUITEM &&
|
|
|
|
(NODE_INFO (parent)->type != NODE_TYPE_MENUITEM &&
|
|
|
|
NODE_INFO (parent)->type != GTK_UI_MANAGER_TOOLITEM),
|
|
|
|
NODE_INFO (parent)->type != NODE_TYPE_TOOLITEM),
|
|
|
|
NULL);
|
|
|
|
NULL);
|
|
|
|
|
|
|
|
|
|
|
|
if (parent)
|
|
|
|
if (parent)
|
|
|
@ -584,12 +584,12 @@ get_child_node (GtkUIManager *self,
|
|
|
|
!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 */
|
|
|
|
if (NODE_INFO (child)->type == GTK_UI_MANAGER_UNDECIDED)
|
|
|
|
if (NODE_INFO (child)->type == NODE_TYPE_UNDECIDED)
|
|
|
|
NODE_INFO (child)->type = node_type;
|
|
|
|
NODE_INFO (child)->type = node_type;
|
|
|
|
|
|
|
|
|
|
|
|
/* warn about type mismatch */
|
|
|
|
/* warn about type mismatch */
|
|
|
|
if (NODE_INFO (child)->type != GTK_UI_MANAGER_UNDECIDED &&
|
|
|
|
if (NODE_INFO (child)->type != NODE_TYPE_UNDECIDED &&
|
|
|
|
node_type != GTK_UI_MANAGER_UNDECIDED &&
|
|
|
|
node_type != NODE_TYPE_UNDECIDED &&
|
|
|
|
NODE_INFO (child)->type != node_type)
|
|
|
|
NODE_INFO (child)->type != node_type)
|
|
|
|
g_warning ("node type doesn't match %d (%s is type %d)",
|
|
|
|
g_warning ("node type doesn't match %d (%s is type %d)",
|
|
|
|
node_type,
|
|
|
|
node_type,
|
|
|
@ -602,9 +602,9 @@ get_child_node (GtkUIManager *self,
|
|
|
|
}
|
|
|
|
}
|
|
|
|
if (!child && create)
|
|
|
|
if (!child && create)
|
|
|
|
{
|
|
|
|
{
|
|
|
|
GtkUIManagerNode *mnode;
|
|
|
|
Node *mnode;
|
|
|
|
|
|
|
|
|
|
|
|
mnode = g_chunk_new0 (GtkUIManagerNode, merge_node_chunk);
|
|
|
|
mnode = g_chunk_new0 (Node, merge_node_chunk);
|
|
|
|
mnode->type = node_type;
|
|
|
|
mnode->type = node_type;
|
|
|
|
mnode->name = g_strndup (childname, childname_length);
|
|
|
|
mnode->name = g_strndup (childname, childname_length);
|
|
|
|
mnode->dirty = TRUE;
|
|
|
|
mnode->dirty = TRUE;
|
|
|
@ -624,14 +624,14 @@ get_child_node (GtkUIManager *self,
|
|
|
|
if (strncmp (NODE_INFO (child)->name, childname, childname_length) != 0)
|
|
|
|
if (strncmp (NODE_INFO (child)->name, childname, childname_length) != 0)
|
|
|
|
g_warning ("root node name '%s' doesn't match '%s'",
|
|
|
|
g_warning ("root node name '%s' doesn't match '%s'",
|
|
|
|
childname, NODE_INFO (child)->name);
|
|
|
|
childname, NODE_INFO (child)->name);
|
|
|
|
if (NODE_INFO (child)->type != GTK_UI_MANAGER_ROOT)
|
|
|
|
if (NODE_INFO (child)->type != NODE_TYPE_ROOT)
|
|
|
|
g_warning ("base element must be of type ROOT");
|
|
|
|
g_warning ("base element must be of type ROOT");
|
|
|
|
}
|
|
|
|
}
|
|
|
|
else if (create)
|
|
|
|
else if (create)
|
|
|
|
{
|
|
|
|
{
|
|
|
|
GtkUIManagerNode *mnode;
|
|
|
|
Node *mnode;
|
|
|
|
|
|
|
|
|
|
|
|
mnode = g_chunk_new0 (GtkUIManagerNode, merge_node_chunk);
|
|
|
|
mnode = g_chunk_new0 (Node, merge_node_chunk);
|
|
|
|
mnode->type = node_type;
|
|
|
|
mnode->type = node_type;
|
|
|
|
mnode->name = g_strndup (childname, childname_length);
|
|
|
|
mnode->name = g_strndup (childname, childname_length);
|
|
|
|
mnode->dirty = TRUE;
|
|
|
|
mnode->dirty = TRUE;
|
|
|
@ -646,7 +646,7 @@ get_child_node (GtkUIManager *self,
|
|
|
|
static GNode *
|
|
|
|
static GNode *
|
|
|
|
get_node (GtkUIManager *self,
|
|
|
|
get_node (GtkUIManager *self,
|
|
|
|
const gchar *path,
|
|
|
|
const gchar *path,
|
|
|
|
GtkUIManagerNodeType node_type,
|
|
|
|
NodeType node_type,
|
|
|
|
gboolean create)
|
|
|
|
gboolean create)
|
|
|
|
{
|
|
|
|
{
|
|
|
|
const gchar *pos, *end;
|
|
|
|
const gchar *pos, *end;
|
|
|
@ -666,7 +666,7 @@ get_node (GtkUIManager *self,
|
|
|
|
else
|
|
|
|
else
|
|
|
|
length = strlen (pos);
|
|
|
|
length = strlen (pos);
|
|
|
|
|
|
|
|
|
|
|
|
node = get_child_node (self, parent, pos, length, GTK_UI_MANAGER_UNDECIDED,
|
|
|
|
node = get_child_node (self, parent, pos, length, NODE_TYPE_UNDECIDED,
|
|
|
|
create, FALSE);
|
|
|
|
create, FALSE);
|
|
|
|
if (!node)
|
|
|
|
if (!node)
|
|
|
|
return NULL;
|
|
|
|
return NULL;
|
|
|
@ -675,7 +675,7 @@ get_node (GtkUIManager *self,
|
|
|
|
parent = node;
|
|
|
|
parent = node;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
if (node != NULL && NODE_INFO (node)->type == GTK_UI_MANAGER_UNDECIDED)
|
|
|
|
if (node != NULL && NODE_INFO (node)->type == NODE_TYPE_UNDECIDED)
|
|
|
|
NODE_INFO (node)->type = node_type;
|
|
|
|
NODE_INFO (node)->type = node_type;
|
|
|
|
return node;
|
|
|
|
return node;
|
|
|
|
}
|
|
|
|
}
|
|
|
@ -700,7 +700,7 @@ gtk_ui_manager_new_merge_id (GtkUIManager *self)
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
static void
|
|
|
|
static void
|
|
|
|
node_prepend_ui_reference (GtkUIManagerNode *node,
|
|
|
|
node_prepend_ui_reference (Node *node,
|
|
|
|
guint merge_id,
|
|
|
|
guint merge_id,
|
|
|
|
GQuark action_quark)
|
|
|
|
GQuark action_quark)
|
|
|
|
{
|
|
|
|
{
|
|
|
@ -717,7 +717,7 @@ node_prepend_ui_reference (GtkUIManagerNode *node,
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
static void
|
|
|
|
static void
|
|
|
|
node_remove_ui_reference (GtkUIManagerNode *node,
|
|
|
|
node_remove_ui_reference (Node *node,
|
|
|
|
guint merge_id)
|
|
|
|
guint merge_id)
|
|
|
|
{
|
|
|
|
{
|
|
|
|
GList *p;
|
|
|
|
GList *p;
|
|
|
@ -846,7 +846,7 @@ start_element_handler (GMarkupParseContext *context,
|
|
|
|
ctx->state = STATE_MENU;
|
|
|
|
ctx->state = STATE_MENU;
|
|
|
|
ctx->current = get_child_node (self, ctx->current,
|
|
|
|
ctx->current = get_child_node (self, ctx->current,
|
|
|
|
node_name, strlen (node_name),
|
|
|
|
node_name, strlen (node_name),
|
|
|
|
GTK_UI_MANAGER_MENUBAR,
|
|
|
|
NODE_TYPE_MENUBAR,
|
|
|
|
TRUE, FALSE);
|
|
|
|
TRUE, FALSE);
|
|
|
|
if (NODE_INFO (ctx->current)->action_name == 0)
|
|
|
|
if (NODE_INFO (ctx->current)->action_name == 0)
|
|
|
|
NODE_INFO (ctx->current)->action_name = action_quark;
|
|
|
|
NODE_INFO (ctx->current)->action_name = action_quark;
|
|
|
@ -861,7 +861,7 @@ start_element_handler (GMarkupParseContext *context,
|
|
|
|
{
|
|
|
|
{
|
|
|
|
ctx->current = get_child_node (self, ctx->current,
|
|
|
|
ctx->current = get_child_node (self, ctx->current,
|
|
|
|
node_name, strlen (node_name),
|
|
|
|
node_name, strlen (node_name),
|
|
|
|
GTK_UI_MANAGER_MENU,
|
|
|
|
NODE_TYPE_MENU,
|
|
|
|
TRUE, top);
|
|
|
|
TRUE, top);
|
|
|
|
if (NODE_INFO (ctx->current)->action_name == 0)
|
|
|
|
if (NODE_INFO (ctx->current)->action_name == 0)
|
|
|
|
NODE_INFO (ctx->current)->action_name = action_quark;
|
|
|
|
NODE_INFO (ctx->current)->action_name = action_quark;
|
|
|
@ -879,7 +879,7 @@ start_element_handler (GMarkupParseContext *context,
|
|
|
|
ctx->state = STATE_MENUITEM;
|
|
|
|
ctx->state = STATE_MENUITEM;
|
|
|
|
node = get_child_node (self, ctx->current,
|
|
|
|
node = get_child_node (self, ctx->current,
|
|
|
|
node_name, strlen (node_name),
|
|
|
|
node_name, strlen (node_name),
|
|
|
|
GTK_UI_MANAGER_MENUITEM,
|
|
|
|
NODE_TYPE_MENUITEM,
|
|
|
|
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;
|
|
|
@ -897,7 +897,7 @@ start_element_handler (GMarkupParseContext *context,
|
|
|
|
ctx->state = STATE_MENU;
|
|
|
|
ctx->state = STATE_MENU;
|
|
|
|
ctx->current = get_child_node (self, ctx->current,
|
|
|
|
ctx->current = get_child_node (self, ctx->current,
|
|
|
|
node_name, strlen (node_name),
|
|
|
|
node_name, strlen (node_name),
|
|
|
|
GTK_UI_MANAGER_POPUP,
|
|
|
|
NODE_TYPE_POPUP,
|
|
|
|
TRUE, FALSE);
|
|
|
|
TRUE, FALSE);
|
|
|
|
if (NODE_INFO (ctx->current)->action_name == 0)
|
|
|
|
if (NODE_INFO (ctx->current)->action_name == 0)
|
|
|
|
NODE_INFO (ctx->current)->action_name = action_quark;
|
|
|
|
NODE_INFO (ctx->current)->action_name = action_quark;
|
|
|
@ -914,12 +914,12 @@ start_element_handler (GMarkupParseContext *context,
|
|
|
|
if (ctx->state == STATE_TOOLBAR)
|
|
|
|
if (ctx->state == STATE_TOOLBAR)
|
|
|
|
ctx->current = get_child_node (self, ctx->current,
|
|
|
|
ctx->current = get_child_node (self, ctx->current,
|
|
|
|
node_name, strlen (node_name),
|
|
|
|
node_name, strlen (node_name),
|
|
|
|
GTK_UI_MANAGER_TOOLBAR_PLACEHOLDER,
|
|
|
|
NODE_TYPE_TOOLBAR_PLACEHOLDER,
|
|
|
|
TRUE, top);
|
|
|
|
TRUE, top);
|
|
|
|
else
|
|
|
|
else
|
|
|
|
ctx->current = get_child_node (self, ctx->current,
|
|
|
|
ctx->current = get_child_node (self, ctx->current,
|
|
|
|
node_name, strlen (node_name),
|
|
|
|
node_name, strlen (node_name),
|
|
|
|
GTK_UI_MANAGER_MENU_PLACEHOLDER,
|
|
|
|
NODE_TYPE_MENU_PLACEHOLDER,
|
|
|
|
TRUE, top);
|
|
|
|
TRUE, top);
|
|
|
|
|
|
|
|
|
|
|
|
node_prepend_ui_reference (NODE_INFO (ctx->current),
|
|
|
|
node_prepend_ui_reference (NODE_INFO (ctx->current),
|
|
|
@ -941,7 +941,7 @@ start_element_handler (GMarkupParseContext *context,
|
|
|
|
ctx->state = STATE_MENUITEM;
|
|
|
|
ctx->state = STATE_MENUITEM;
|
|
|
|
node = get_child_node (self, ctx->current,
|
|
|
|
node = get_child_node (self, ctx->current,
|
|
|
|
node_name, strlen (node_name),
|
|
|
|
node_name, strlen (node_name),
|
|
|
|
GTK_UI_MANAGER_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;
|
|
|
@ -959,7 +959,7 @@ start_element_handler (GMarkupParseContext *context,
|
|
|
|
ctx->state = STATE_TOOLBAR;
|
|
|
|
ctx->state = STATE_TOOLBAR;
|
|
|
|
ctx->current = get_child_node (self, ctx->current,
|
|
|
|
ctx->current = get_child_node (self, ctx->current,
|
|
|
|
node_name, strlen (node_name),
|
|
|
|
node_name, strlen (node_name),
|
|
|
|
GTK_UI_MANAGER_TOOLBAR,
|
|
|
|
NODE_TYPE_TOOLBAR,
|
|
|
|
TRUE, FALSE);
|
|
|
|
TRUE, FALSE);
|
|
|
|
if (NODE_INFO (ctx->current)->action_name == 0)
|
|
|
|
if (NODE_INFO (ctx->current)->action_name == 0)
|
|
|
|
NODE_INFO (ctx->current)->action_name = action_quark;
|
|
|
|
NODE_INFO (ctx->current)->action_name = action_quark;
|
|
|
@ -977,7 +977,7 @@ start_element_handler (GMarkupParseContext *context,
|
|
|
|
ctx->state = STATE_TOOLITEM;
|
|
|
|
ctx->state = STATE_TOOLITEM;
|
|
|
|
node = get_child_node (self, ctx->current,
|
|
|
|
node = get_child_node (self, ctx->current,
|
|
|
|
node_name, strlen (node_name),
|
|
|
|
node_name, strlen (node_name),
|
|
|
|
GTK_UI_MANAGER_TOOLITEM,
|
|
|
|
NODE_TYPE_TOOLITEM,
|
|
|
|
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;
|
|
|
@ -1028,7 +1028,7 @@ end_element_handler (GMarkupParseContext *context,
|
|
|
|
case STATE_MENU:
|
|
|
|
case STATE_MENU:
|
|
|
|
case STATE_TOOLBAR:
|
|
|
|
case STATE_TOOLBAR:
|
|
|
|
ctx->current = ctx->current->parent;
|
|
|
|
ctx->current = ctx->current->parent;
|
|
|
|
if (NODE_INFO (ctx->current)->type == GTK_UI_MANAGER_ROOT)
|
|
|
|
if (NODE_INFO (ctx->current)->type == NODE_TYPE_ROOT)
|
|
|
|
ctx->state = STATE_ROOT;
|
|
|
|
ctx->state = STATE_ROOT;
|
|
|
|
/* else, stay in same state */
|
|
|
|
/* else, stay in same state */
|
|
|
|
break;
|
|
|
|
break;
|
|
|
@ -1216,33 +1216,33 @@ gtk_ui_manager_add_ui (GtkUIManager *self,
|
|
|
|
{
|
|
|
|
{
|
|
|
|
GNode *node;
|
|
|
|
GNode *node;
|
|
|
|
GNode *child;
|
|
|
|
GNode *child;
|
|
|
|
GtkUIManagerNodeType type;
|
|
|
|
NodeType type;
|
|
|
|
GQuark action_quark = 0;
|
|
|
|
GQuark action_quark = 0;
|
|
|
|
|
|
|
|
|
|
|
|
g_return_if_fail (GTK_IS_UI_MANAGER (self));
|
|
|
|
g_return_if_fail (GTK_IS_UI_MANAGER (self));
|
|
|
|
g_return_if_fail (merge_id > 0);
|
|
|
|
g_return_if_fail (merge_id > 0);
|
|
|
|
|
|
|
|
|
|
|
|
node = get_node (self, path, GTK_UI_MANAGER_UNDECIDED, FALSE);
|
|
|
|
node = get_node (self, path, NODE_TYPE_UNDECIDED, FALSE);
|
|
|
|
|
|
|
|
|
|
|
|
if (node == NULL)
|
|
|
|
if (node == NULL)
|
|
|
|
return;
|
|
|
|
return;
|
|
|
|
|
|
|
|
|
|
|
|
switch (NODE_INFO (node)->type)
|
|
|
|
switch (NODE_INFO (node)->type)
|
|
|
|
{
|
|
|
|
{
|
|
|
|
case GTK_UI_MANAGER_MENU:
|
|
|
|
case NODE_TYPE_MENU:
|
|
|
|
case GTK_UI_MANAGER_POPUP:
|
|
|
|
case NODE_TYPE_POPUP:
|
|
|
|
case GTK_UI_MANAGER_MENU_PLACEHOLDER:
|
|
|
|
case NODE_TYPE_MENU_PLACEHOLDER:
|
|
|
|
if (action != NULL)
|
|
|
|
if (action != NULL)
|
|
|
|
type = GTK_UI_MANAGER_MENUITEM;
|
|
|
|
type = NODE_TYPE_MENUITEM;
|
|
|
|
else
|
|
|
|
else
|
|
|
|
type = GTK_UI_MANAGER_SEPARATOR;
|
|
|
|
type = NODE_TYPE_SEPARATOR;
|
|
|
|
break;
|
|
|
|
break;
|
|
|
|
case GTK_UI_MANAGER_TOOLBAR:
|
|
|
|
case NODE_TYPE_TOOLBAR:
|
|
|
|
case GTK_UI_MANAGER_TOOLBAR_PLACEHOLDER:
|
|
|
|
case NODE_TYPE_TOOLBAR_PLACEHOLDER:
|
|
|
|
if (action != NULL)
|
|
|
|
if (action != NULL)
|
|
|
|
type = GTK_UI_MANAGER_TOOLITEM;
|
|
|
|
type = NODE_TYPE_TOOLITEM;
|
|
|
|
else
|
|
|
|
else
|
|
|
|
type = GTK_UI_MANAGER_SEPARATOR;
|
|
|
|
type = NODE_TYPE_SEPARATOR;
|
|
|
|
break;
|
|
|
|
break;
|
|
|
|
default:
|
|
|
|
default:
|
|
|
|
return;
|
|
|
|
return;
|
|
|
@ -1252,13 +1252,13 @@ gtk_ui_manager_add_ui (GtkUIManager *self,
|
|
|
|
{
|
|
|
|
{
|
|
|
|
switch (type)
|
|
|
|
switch (type)
|
|
|
|
{
|
|
|
|
{
|
|
|
|
case GTK_UI_MANAGER_MENUITEM:
|
|
|
|
case NODE_TYPE_MENUITEM:
|
|
|
|
name = "menuitem";
|
|
|
|
name = "menuitem";
|
|
|
|
break;
|
|
|
|
break;
|
|
|
|
case GTK_UI_MANAGER_TOOLITEM:
|
|
|
|
case NODE_TYPE_TOOLITEM:
|
|
|
|
name = "toolitem";
|
|
|
|
name = "toolitem";
|
|
|
|
break;
|
|
|
|
break;
|
|
|
|
case GTK_UI_MANAGER_SEPARATOR:
|
|
|
|
case NODE_TYPE_SEPARATOR:
|
|
|
|
name = "separator";
|
|
|
|
name = "separator";
|
|
|
|
break;
|
|
|
|
break;
|
|
|
|
default:
|
|
|
|
default:
|
|
|
@ -1353,11 +1353,11 @@ find_menu_position (GNode *node,
|
|
|
|
gint pos;
|
|
|
|
gint pos;
|
|
|
|
|
|
|
|
|
|
|
|
g_return_val_if_fail (node != NULL, FALSE);
|
|
|
|
g_return_val_if_fail (node != NULL, FALSE);
|
|
|
|
g_return_val_if_fail (NODE_INFO (node)->type == GTK_UI_MANAGER_MENU ||
|
|
|
|
g_return_val_if_fail (NODE_INFO (node)->type == NODE_TYPE_MENU ||
|
|
|
|
NODE_INFO (node)->type == GTK_UI_MANAGER_POPUP ||
|
|
|
|
NODE_INFO (node)->type == NODE_TYPE_POPUP ||
|
|
|
|
NODE_INFO (node)->type == GTK_UI_MANAGER_MENU_PLACEHOLDER ||
|
|
|
|
NODE_INFO (node)->type == NODE_TYPE_MENU_PLACEHOLDER ||
|
|
|
|
NODE_INFO (node)->type == GTK_UI_MANAGER_MENUITEM ||
|
|
|
|
NODE_INFO (node)->type == NODE_TYPE_MENUITEM ||
|
|
|
|
NODE_INFO (node)->type == GTK_UI_MANAGER_SEPARATOR,
|
|
|
|
NODE_INFO (node)->type == NODE_TYPE_SEPARATOR,
|
|
|
|
FALSE);
|
|
|
|
FALSE);
|
|
|
|
|
|
|
|
|
|
|
|
/* first sibling -- look at parent */
|
|
|
|
/* first sibling -- look at parent */
|
|
|
@ -1369,12 +1369,12 @@ find_menu_position (GNode *node,
|
|
|
|
parent = node->parent;
|
|
|
|
parent = node->parent;
|
|
|
|
switch (NODE_INFO (parent)->type)
|
|
|
|
switch (NODE_INFO (parent)->type)
|
|
|
|
{
|
|
|
|
{
|
|
|
|
case GTK_UI_MANAGER_MENUBAR:
|
|
|
|
case NODE_TYPE_MENUBAR:
|
|
|
|
case GTK_UI_MANAGER_POPUP:
|
|
|
|
case NODE_TYPE_POPUP:
|
|
|
|
menushell = NODE_INFO (parent)->proxy;
|
|
|
|
menushell = NODE_INFO (parent)->proxy;
|
|
|
|
pos = 0;
|
|
|
|
pos = 0;
|
|
|
|
break;
|
|
|
|
break;
|
|
|
|
case GTK_UI_MANAGER_MENU:
|
|
|
|
case NODE_TYPE_MENU:
|
|
|
|
menushell = NODE_INFO (parent)->proxy;
|
|
|
|
menushell = NODE_INFO (parent)->proxy;
|
|
|
|
if (GTK_IS_MENU_ITEM (menushell))
|
|
|
|
if (GTK_IS_MENU_ITEM (menushell))
|
|
|
|
menushell = gtk_menu_item_get_submenu (GTK_MENU_ITEM (menushell));
|
|
|
|
menushell = gtk_menu_item_get_submenu (GTK_MENU_ITEM (menushell));
|
|
|
@ -1384,7 +1384,7 @@ find_menu_position (GNode *node,
|
|
|
|
else
|
|
|
|
else
|
|
|
|
pos = 0;
|
|
|
|
pos = 0;
|
|
|
|
break;
|
|
|
|
break;
|
|
|
|
case GTK_UI_MANAGER_MENU_PLACEHOLDER:
|
|
|
|
case NODE_TYPE_MENU_PLACEHOLDER:
|
|
|
|
menushell = gtk_widget_get_parent (NODE_INFO (parent)->proxy);
|
|
|
|
menushell = gtk_widget_get_parent (NODE_INFO (parent)->proxy);
|
|
|
|
g_return_val_if_fail (GTK_IS_MENU_SHELL (menushell), FALSE);
|
|
|
|
g_return_val_if_fail (GTK_IS_MENU_SHELL (menushell), FALSE);
|
|
|
|
pos = g_list_index (GTK_MENU_SHELL (menushell)->children,
|
|
|
|
pos = g_list_index (GTK_MENU_SHELL (menushell)->children,
|
|
|
@ -1402,7 +1402,7 @@ find_menu_position (GNode *node,
|
|
|
|
GNode *sibling;
|
|
|
|
GNode *sibling;
|
|
|
|
|
|
|
|
|
|
|
|
sibling = node->prev;
|
|
|
|
sibling = node->prev;
|
|
|
|
if (NODE_INFO (sibling)->type == GTK_UI_MANAGER_MENU_PLACEHOLDER)
|
|
|
|
if (NODE_INFO (sibling)->type == NODE_TYPE_MENU_PLACEHOLDER)
|
|
|
|
prev_child = NODE_INFO (sibling)->extra; /* second Separator */
|
|
|
|
prev_child = NODE_INFO (sibling)->extra; /* second Separator */
|
|
|
|
else
|
|
|
|
else
|
|
|
|
prev_child = NODE_INFO (sibling)->proxy;
|
|
|
|
prev_child = NODE_INFO (sibling)->proxy;
|
|
|
@ -1431,10 +1431,10 @@ find_toolbar_position (GNode *node,
|
|
|
|
gint pos;
|
|
|
|
gint pos;
|
|
|
|
|
|
|
|
|
|
|
|
g_return_val_if_fail (node != NULL, FALSE);
|
|
|
|
g_return_val_if_fail (node != NULL, FALSE);
|
|
|
|
g_return_val_if_fail (NODE_INFO (node)->type == GTK_UI_MANAGER_TOOLBAR ||
|
|
|
|
g_return_val_if_fail (NODE_INFO (node)->type == NODE_TYPE_TOOLBAR ||
|
|
|
|
NODE_INFO (node)->type == GTK_UI_MANAGER_TOOLBAR_PLACEHOLDER ||
|
|
|
|
NODE_INFO (node)->type == NODE_TYPE_TOOLBAR_PLACEHOLDER ||
|
|
|
|
NODE_INFO (node)->type == GTK_UI_MANAGER_TOOLITEM ||
|
|
|
|
NODE_INFO (node)->type == NODE_TYPE_TOOLITEM ||
|
|
|
|
NODE_INFO (node)->type == GTK_UI_MANAGER_SEPARATOR,
|
|
|
|
NODE_INFO (node)->type == NODE_TYPE_SEPARATOR,
|
|
|
|
FALSE);
|
|
|
|
FALSE);
|
|
|
|
|
|
|
|
|
|
|
|
/* first sibling -- look at parent */
|
|
|
|
/* first sibling -- look at parent */
|
|
|
@ -1445,11 +1445,11 @@ find_toolbar_position (GNode *node,
|
|
|
|
parent = node->parent;
|
|
|
|
parent = node->parent;
|
|
|
|
switch (NODE_INFO (parent)->type)
|
|
|
|
switch (NODE_INFO (parent)->type)
|
|
|
|
{
|
|
|
|
{
|
|
|
|
case GTK_UI_MANAGER_TOOLBAR:
|
|
|
|
case NODE_TYPE_TOOLBAR:
|
|
|
|
toolbar = NODE_INFO (parent)->proxy;
|
|
|
|
toolbar = NODE_INFO (parent)->proxy;
|
|
|
|
pos = 0;
|
|
|
|
pos = 0;
|
|
|
|
break;
|
|
|
|
break;
|
|
|
|
case GTK_UI_MANAGER_TOOLBAR_PLACEHOLDER:
|
|
|
|
case NODE_TYPE_TOOLBAR_PLACEHOLDER:
|
|
|
|
toolbar = gtk_widget_get_parent (NODE_INFO (parent)->proxy);
|
|
|
|
toolbar = gtk_widget_get_parent (NODE_INFO (parent)->proxy);
|
|
|
|
g_return_val_if_fail (GTK_IS_TOOLBAR (toolbar), FALSE);
|
|
|
|
g_return_val_if_fail (GTK_IS_TOOLBAR (toolbar), FALSE);
|
|
|
|
pos = gtk_toolbar_get_item_index (GTK_TOOLBAR (toolbar),
|
|
|
|
pos = gtk_toolbar_get_item_index (GTK_TOOLBAR (toolbar),
|
|
|
@ -1467,7 +1467,7 @@ find_toolbar_position (GNode *node,
|
|
|
|
GNode *sibling;
|
|
|
|
GNode *sibling;
|
|
|
|
|
|
|
|
|
|
|
|
sibling = node->prev;
|
|
|
|
sibling = node->prev;
|
|
|
|
if (NODE_INFO (sibling)->type == GTK_UI_MANAGER_TOOLBAR_PLACEHOLDER)
|
|
|
|
if (NODE_INFO (sibling)->type == NODE_TYPE_TOOLBAR_PLACEHOLDER)
|
|
|
|
prev_child = NODE_INFO (sibling)->extra; /* second Separator */
|
|
|
|
prev_child = NODE_INFO (sibling)->extra; /* second Separator */
|
|
|
|
else
|
|
|
|
else
|
|
|
|
prev_child = NODE_INFO (sibling)->proxy;
|
|
|
|
prev_child = NODE_INFO (sibling)->proxy;
|
|
|
@ -1493,7 +1493,7 @@ update_node (GtkUIManager *self,
|
|
|
|
GNode *node,
|
|
|
|
GNode *node,
|
|
|
|
gboolean add_tearoffs)
|
|
|
|
gboolean add_tearoffs)
|
|
|
|
{
|
|
|
|
{
|
|
|
|
GtkUIManagerNode *info;
|
|
|
|
Node *info;
|
|
|
|
GNode *child;
|
|
|
|
GNode *child;
|
|
|
|
GtkAction *action;
|
|
|
|
GtkAction *action;
|
|
|
|
#ifdef DEBUG_UI_MANAGER
|
|
|
|
#ifdef DEBUG_UI_MANAGER
|
|
|
@ -1537,11 +1537,11 @@ update_node (GtkUIManager *self,
|
|
|
|
|
|
|
|
|
|
|
|
/* Check if the node doesn't have an action and must have an action */
|
|
|
|
/* Check if the node doesn't have an action and must have an action */
|
|
|
|
if (action == NULL &&
|
|
|
|
if (action == NULL &&
|
|
|
|
info->type != GTK_UI_MANAGER_MENUBAR &&
|
|
|
|
info->type != NODE_TYPE_MENUBAR &&
|
|
|
|
info->type != GTK_UI_MANAGER_TOOLBAR &&
|
|
|
|
info->type != NODE_TYPE_TOOLBAR &&
|
|
|
|
info->type != GTK_UI_MANAGER_SEPARATOR &&
|
|
|
|
info->type != NODE_TYPE_SEPARATOR &&
|
|
|
|
info->type != GTK_UI_MANAGER_MENU_PLACEHOLDER &&
|
|
|
|
info->type != NODE_TYPE_MENU_PLACEHOLDER &&
|
|
|
|
info->type != GTK_UI_MANAGER_TOOLBAR_PLACEHOLDER)
|
|
|
|
info->type != NODE_TYPE_TOOLBAR_PLACEHOLDER)
|
|
|
|
{
|
|
|
|
{
|
|
|
|
/* FIXME: Should we warn here? */
|
|
|
|
/* FIXME: Should we warn here? */
|
|
|
|
goto recurse_children;
|
|
|
|
goto recurse_children;
|
|
|
@ -1552,7 +1552,7 @@ update_node (GtkUIManager *self,
|
|
|
|
*/
|
|
|
|
*/
|
|
|
|
if (info->proxy != NULL && action == info->action)
|
|
|
|
if (info->proxy != NULL && action == info->action)
|
|
|
|
{
|
|
|
|
{
|
|
|
|
if (info->type == GTK_UI_MANAGER_MENU)
|
|
|
|
if (info->type == NODE_TYPE_MENU)
|
|
|
|
{
|
|
|
|
{
|
|
|
|
GtkWidget *menu;
|
|
|
|
GtkWidget *menu;
|
|
|
|
GList *siblings;
|
|
|
|
GList *siblings;
|
|
|
@ -1574,7 +1574,7 @@ update_node (GtkUIManager *self,
|
|
|
|
|
|
|
|
|
|
|
|
switch (info->type)
|
|
|
|
switch (info->type)
|
|
|
|
{
|
|
|
|
{
|
|
|
|
case GTK_UI_MANAGER_MENUBAR:
|
|
|
|
case NODE_TYPE_MENUBAR:
|
|
|
|
if (info->proxy == NULL)
|
|
|
|
if (info->proxy == NULL)
|
|
|
|
{
|
|
|
|
{
|
|
|
|
info->proxy = gtk_menu_bar_new ();
|
|
|
|
info->proxy = gtk_menu_bar_new ();
|
|
|
@ -1582,7 +1582,7 @@ update_node (GtkUIManager *self,
|
|
|
|
g_signal_emit (self, merge_signals[ADD_WIDGET], 0, info->proxy);
|
|
|
|
g_signal_emit (self, merge_signals[ADD_WIDGET], 0, info->proxy);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
break;
|
|
|
|
break;
|
|
|
|
case GTK_UI_MANAGER_POPUP:
|
|
|
|
case NODE_TYPE_POPUP:
|
|
|
|
if (info->proxy == NULL)
|
|
|
|
if (info->proxy == NULL)
|
|
|
|
{
|
|
|
|
{
|
|
|
|
info->proxy = gtk_menu_new ();
|
|
|
|
info->proxy = gtk_menu_new ();
|
|
|
@ -1590,7 +1590,7 @@ update_node (GtkUIManager *self,
|
|
|
|
self->private_data->accel_group);
|
|
|
|
self->private_data->accel_group);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
break;
|
|
|
|
break;
|
|
|
|
case GTK_UI_MANAGER_MENU:
|
|
|
|
case NODE_TYPE_MENU:
|
|
|
|
{
|
|
|
|
{
|
|
|
|
GtkWidget *prev_submenu = NULL;
|
|
|
|
GtkWidget *prev_submenu = NULL;
|
|
|
|
GtkWidget *menu;
|
|
|
|
GtkWidget *menu;
|
|
|
@ -1640,12 +1640,12 @@ update_node (GtkUIManager *self,
|
|
|
|
g_object_set (G_OBJECT (siblings->data), "visible", add_tearoffs, 0);
|
|
|
|
g_object_set (G_OBJECT (siblings->data), "visible", add_tearoffs, 0);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
break;
|
|
|
|
break;
|
|
|
|
case GTK_UI_MANAGER_UNDECIDED:
|
|
|
|
case NODE_TYPE_UNDECIDED:
|
|
|
|
g_warning ("found 'undecided node!");
|
|
|
|
g_warning ("found 'undecided node!");
|
|
|
|
break;
|
|
|
|
break;
|
|
|
|
case GTK_UI_MANAGER_ROOT:
|
|
|
|
case NODE_TYPE_ROOT:
|
|
|
|
break;
|
|
|
|
break;
|
|
|
|
case GTK_UI_MANAGER_TOOLBAR:
|
|
|
|
case NODE_TYPE_TOOLBAR:
|
|
|
|
if (info->proxy == NULL)
|
|
|
|
if (info->proxy == NULL)
|
|
|
|
{
|
|
|
|
{
|
|
|
|
info->proxy = gtk_toolbar_new ();
|
|
|
|
info->proxy = gtk_toolbar_new ();
|
|
|
@ -1653,7 +1653,7 @@ update_node (GtkUIManager *self,
|
|
|
|
g_signal_emit (self, merge_signals[ADD_WIDGET], 0, info->proxy);
|
|
|
|
g_signal_emit (self, merge_signals[ADD_WIDGET], 0, info->proxy);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
break;
|
|
|
|
break;
|
|
|
|
case GTK_UI_MANAGER_MENU_PLACEHOLDER:
|
|
|
|
case NODE_TYPE_MENU_PLACEHOLDER:
|
|
|
|
/* create menu items for placeholders if necessary ... */
|
|
|
|
/* create menu items for placeholders if necessary ... */
|
|
|
|
if (!GTK_IS_SEPARATOR_MENU_ITEM (info->proxy) ||
|
|
|
|
if (!GTK_IS_SEPARATOR_MENU_ITEM (info->proxy) ||
|
|
|
|
!GTK_IS_SEPARATOR_MENU_ITEM (info->extra))
|
|
|
|
!GTK_IS_SEPARATOR_MENU_ITEM (info->extra))
|
|
|
@ -1684,7 +1684,7 @@ update_node (GtkUIManager *self,
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
break;
|
|
|
|
break;
|
|
|
|
case GTK_UI_MANAGER_TOOLBAR_PLACEHOLDER:
|
|
|
|
case NODE_TYPE_TOOLBAR_PLACEHOLDER:
|
|
|
|
/* create toolbar items for placeholders if necessary ... */
|
|
|
|
/* create toolbar items for placeholders if necessary ... */
|
|
|
|
if (!GTK_IS_SEPARATOR_TOOL_ITEM (info->proxy) ||
|
|
|
|
if (!GTK_IS_SEPARATOR_TOOL_ITEM (info->proxy) ||
|
|
|
|
!GTK_IS_SEPARATOR_TOOL_ITEM (info->extra))
|
|
|
|
!GTK_IS_SEPARATOR_TOOL_ITEM (info->extra))
|
|
|
@ -1717,7 +1717,7 @@ update_node (GtkUIManager *self,
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
break;
|
|
|
|
break;
|
|
|
|
case GTK_UI_MANAGER_MENUITEM:
|
|
|
|
case NODE_TYPE_MENUITEM:
|
|
|
|
/* remove the proxy if it is of the wrong type ... */
|
|
|
|
/* remove the proxy if it is of the wrong type ... */
|
|
|
|
if (info->proxy && G_OBJECT_TYPE (info->proxy) !=
|
|
|
|
if (info->proxy && G_OBJECT_TYPE (info->proxy) !=
|
|
|
|
GTK_ACTION_GET_CLASS (info->action)->menu_item_type)
|
|
|
|
GTK_ACTION_GET_CLASS (info->action)->menu_item_type)
|
|
|
@ -1746,7 +1746,7 @@ update_node (GtkUIManager *self,
|
|
|
|
gtk_action_connect_proxy (info->action, info->proxy);
|
|
|
|
gtk_action_connect_proxy (info->action, info->proxy);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
break;
|
|
|
|
break;
|
|
|
|
case GTK_UI_MANAGER_TOOLITEM:
|
|
|
|
case NODE_TYPE_TOOLITEM:
|
|
|
|
/* remove the proxy if it is of the wrong type ... */
|
|
|
|
/* remove the proxy if it is of the wrong type ... */
|
|
|
|
if (info->proxy && G_OBJECT_TYPE (info->proxy) !=
|
|
|
|
if (info->proxy && G_OBJECT_TYPE (info->proxy) !=
|
|
|
|
GTK_ACTION_GET_CLASS (info->action)->toolbar_item_type)
|
|
|
|
GTK_ACTION_GET_CLASS (info->action)->toolbar_item_type)
|
|
|
@ -1774,9 +1774,9 @@ update_node (GtkUIManager *self,
|
|
|
|
gtk_action_connect_proxy (info->action, info->proxy);
|
|
|
|
gtk_action_connect_proxy (info->action, info->proxy);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
break;
|
|
|
|
break;
|
|
|
|
case GTK_UI_MANAGER_SEPARATOR:
|
|
|
|
case NODE_TYPE_SEPARATOR:
|
|
|
|
if (NODE_INFO (node->parent)->type == GTK_UI_MANAGER_TOOLBAR ||
|
|
|
|
if (NODE_INFO (node->parent)->type == NODE_TYPE_TOOLBAR ||
|
|
|
|
NODE_INFO (node->parent)->type == GTK_UI_MANAGER_TOOLBAR_PLACEHOLDER)
|
|
|
|
NODE_INFO (node->parent)->type == NODE_TYPE_TOOLBAR_PLACEHOLDER)
|
|
|
|
{
|
|
|
|
{
|
|
|
|
GtkWidget *toolbar;
|
|
|
|
GtkWidget *toolbar;
|
|
|
|
gint pos;
|
|
|
|
gint pos;
|
|
|
@ -1831,7 +1831,7 @@ update_node (GtkUIManager *self,
|
|
|
|
|
|
|
|
|
|
|
|
current = child;
|
|
|
|
current = child;
|
|
|
|
child = current->next;
|
|
|
|
child = current->next;
|
|
|
|
update_node (self, current, add_tearoffs && (info->type != GTK_UI_MANAGER_POPUP));
|
|
|
|
update_node (self, current, add_tearoffs && (info->type != NODE_TYPE_POPUP));
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
/* handle cleanup of dead nodes */
|
|
|
|
/* handle cleanup of dead nodes */
|
|
|
@ -1839,8 +1839,8 @@ update_node (GtkUIManager *self,
|
|
|
|
{
|
|
|
|
{
|
|
|
|
if (info->proxy)
|
|
|
|
if (info->proxy)
|
|
|
|
gtk_widget_destroy (info->proxy);
|
|
|
|
gtk_widget_destroy (info->proxy);
|
|
|
|
if ((info->type == GTK_UI_MANAGER_MENU_PLACEHOLDER ||
|
|
|
|
if ((info->type == NODE_TYPE_MENU_PLACEHOLDER ||
|
|
|
|
info->type == GTK_UI_MANAGER_TOOLBAR_PLACEHOLDER) &&
|
|
|
|
info->type == NODE_TYPE_TOOLBAR_PLACEHOLDER) &&
|
|
|
|
info->extra)
|
|
|
|
info->extra)
|
|
|
|
gtk_widget_destroy (info->extra);
|
|
|
|
gtk_widget_destroy (info->extra);
|
|
|
|
g_chunk_free (info, merge_node_chunk);
|
|
|
|
g_chunk_free (info, merge_node_chunk);
|
|
|
@ -1966,7 +1966,7 @@ print_node (GtkUIManager *self,
|
|
|
|
gint indent_level,
|
|
|
|
gint indent_level,
|
|
|
|
GString *buffer)
|
|
|
|
GString *buffer)
|
|
|
|
{
|
|
|
|
{
|
|
|
|
GtkUIManagerNode *mnode;
|
|
|
|
Node *mnode;
|
|
|
|
GNode *child;
|
|
|
|
GNode *child;
|
|
|
|
|
|
|
|
|
|
|
|
mnode = node->data;
|
|
|
|
mnode = node->data;
|
|
|
|