[glib/wip/menus-rebase2] gmenu: Switch to using strings for public API
- From: Colin Walters <walters src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [glib/wip/menus-rebase2] gmenu: Switch to using strings for public API
- Date: Fri, 18 Nov 2011 22:44:26 +0000 (UTC)
commit 8d9ba17f22bf31a2210a11a8ecd9646a78051da1
Author: Colin Walters <walters verbum org>
Date: Fri Nov 18 14:38:23 2011 -0500
gmenu: Switch to using strings for public API
This is more introspection friendly, since we don't have to invoke the
quark functions.
gio/gmenu.c | 42 +++++++------
gio/gmenu.h | 6 +-
gio/gmenuexporter.c | 4 +-
gio/gmenumarkup.c | 12 +---
gio/gmenumodel.c | 154 ++++++++++++++++-------------------------------
gio/gmenumodel.h | 43 ++++++--------
gio/gmenuproxy.c | 4 +-
gio/tests/gmenumodel.c | 24 ++++----
8 files changed, 118 insertions(+), 171 deletions(-)
---
diff --git a/gio/gmenu.c b/gio/gmenu.c
index b47fceb..59ea3bb 100644
--- a/gio/gmenu.c
+++ b/gio/gmenu.c
@@ -104,24 +104,24 @@ g_menu_get_n_items (GMenuModel *model)
static void
g_menu_get_item_attributes (GMenuModel *model,
gint position,
- GHashTable **quark_table,
+ GHashTable **attr_table,
GHashTable **string_table,
GVariant **dictionary)
{
GMenu *menu = G_MENU (model);
- *quark_table = g_hash_table_ref (g_array_index (menu->items, struct item, position).attributes);
+ *attr_table = g_hash_table_ref (g_array_index (menu->items, struct item, position).attributes);
}
static void
g_menu_get_item_links (GMenuModel *model,
gint position,
- GHashTable **quark_table,
- GHashTable **string_table)
+ GHashTable **attr_table,
+ GHashTable **string_table)
{
GMenu *menu = G_MENU (model);
- *quark_table = g_hash_table_ref (g_array_index (menu->items, struct item, position).links);
+ *attr_table = g_hash_table_ref (g_array_index (menu->items, struct item, position).links);
}
/**
@@ -570,18 +570,22 @@ g_menu_item_class_init (GMenuItemClass *class)
**/
void
g_menu_item_set_attribute_value (GMenuItem *menu_item,
- GQuark attribute,
+ const gchar *attribute,
GVariant *value)
{
+ GQuark attribute_q;
+
g_return_if_fail (G_IS_MENU_ITEM (menu_item));
- g_return_if_fail (attribute != 0);
+ g_return_if_fail (attribute != NULL);
+
+ attribute_q = g_quark_from_string (attribute);
g_menu_item_clear_cow (menu_item);
if (value != NULL)
- g_hash_table_insert (menu_item->attributes, GINT_TO_POINTER (attribute), g_variant_ref_sink (value));
+ g_hash_table_insert (menu_item->attributes, GINT_TO_POINTER (attribute_q), g_variant_ref_sink (value));
else
- g_hash_table_remove (menu_item->attributes, GINT_TO_POINTER (attribute));
+ g_hash_table_remove (menu_item->attributes, GINT_TO_POINTER (attribute_q));
}
/**
@@ -605,7 +609,7 @@ g_menu_item_set_attribute_value (GMenuItem *menu_item,
**/
void
g_menu_item_set_attribute (GMenuItem *menu_item,
- GQuark attribute,
+ const gchar *attribute,
const gchar *format_string,
...)
{
@@ -628,33 +632,33 @@ g_menu_item_set_attribute (GMenuItem *menu_item,
/**
* g_menu_item_set_link:
* @menu_item: a #GMenuItem
- * @link: a #GQuark naming the link to establish or unset
+ * @link: type of link to establish or unset
* @model: (allow-none): the #GMenuModel to link to (or %NULL to unset)
*
* Creates a link from @menu_item to @link if non-%NULL, or unsets it.
*
- * @link is a #GQuark that, when converted to a string, gives the
- * name of the link to set. Some commonly-used link quarks are provided
- * as constants, such as %G_MENU_LINK_SUBMENU and %G_MENU_LINK_SECTION.
- *
* Links are used to establish a relationship between a particular menu
* item and another menu. For example, %G_MENU_LINK_SUBMENU is used to
* associate a submenu with a particular menu item.
**/
void
g_menu_item_set_link (GMenuItem *menu_item,
- GQuark link,
+ const gchar *link,
GMenuModel *model)
{
+ GQuark link_q;
+
g_return_if_fail (G_IS_MENU_ITEM (menu_item));
- g_return_if_fail (link != 0);
+ g_return_if_fail (link != NULL);
+
+ link_q = g_quark_from_string (link);
g_menu_item_clear_cow (menu_item);
if (model != NULL)
- g_hash_table_insert (menu_item->links, GINT_TO_POINTER (link), g_object_ref (model));
+ g_hash_table_insert (menu_item->links, GINT_TO_POINTER (link_q), g_object_ref (model));
else
- g_hash_table_remove (menu_item->links, GINT_TO_POINTER (link));
+ g_hash_table_remove (menu_item->links, GINT_TO_POINTER (link_q));
}
/**
diff --git a/gio/gmenu.h b/gio/gmenu.h
index d1cd630..716832f 100644
--- a/gio/gmenu.h
+++ b/gio/gmenu.h
@@ -101,14 +101,14 @@ GMenuItem * g_menu_item_new_section (const g
GMenuModel *section);
void g_menu_item_set_attribute_value (GMenuItem *menu_item,
- GQuark attribute,
+ const char *attribute,
GVariant *value);
void g_menu_item_set_attribute (GMenuItem *menu_item,
- GQuark attribute,
+ const char *attribute,
const gchar *format_string,
...);
void g_menu_item_set_link (GMenuItem *menu_item,
- GQuark link,
+ const char *link,
GMenuModel *model);
void g_menu_item_set_label (GMenuItem *menu_item,
const gchar *label);
diff --git a/gio/gmenuexporter.c b/gio/gmenuexporter.c
index 4c0fa45..2bcd40c 100644
--- a/gio/gmenuexporter.c
+++ b/gio/gmenuexporter.c
@@ -158,7 +158,7 @@ g_menu_exporter_menu_create_links (GMenuExporterMenu *menu,
{
GMenuExporterLink *list = NULL;
GMenuLinkIter *iter;
- const gchar *name;
+ const char *name;
GMenuModel *model;
iter = g_menu_model_iterate_item_links (menu->model, position);
@@ -195,7 +195,7 @@ g_menu_exporter_menu_describe_item (GMenuExporterMenu *menu,
GVariantBuilder builder;
GSequenceIter *iter;
GMenuExporterLink *link;
- const gchar *name;
+ const char *name;
GVariant *value;
g_variant_builder_init (&builder, G_VARIANT_TYPE_VARDICT);
diff --git a/gio/gmenumarkup.c b/gio/gmenumarkup.c
index 4fc09b8..6b2ff02 100644
--- a/gio/gmenumarkup.c
+++ b/gio/gmenumarkup.c
@@ -124,8 +124,7 @@ add_string_attributes (GMenuItem *item,
for (i = 0; names[i]; i++)
{
- GQuark attribute = g_quark_from_string (names[i]);
- g_menu_item_set_attribute (item, attribute, "s", values[i]);
+ g_menu_item_set_attribute (item, names[i], "s", values[i]);
}
}
@@ -258,13 +257,10 @@ g_menu_markup_start_element (GMarkupParseContext *context,
if (COLLECT (STRING, "name", &name,
STRING | OPTIONAL, "id", &id))
{
- GQuark link;
GMenu *menu;
- link = g_quark_from_string (name);
-
menu = g_menu_new ();
- g_menu_item_set_link (state->frame.item, link, G_MENU_MODEL (menu));
+ g_menu_item_set_link (state->frame.item, name, G_MENU_MODEL (menu));
g_menu_markup_push_frame (state, menu, NULL);
if (id != NULL)
@@ -334,7 +330,7 @@ g_menu_markup_end_element (GMarkupParseContext *context,
}
}
- g_menu_item_set_attribute_value (state->frame.item, state->attribute, value);
+ g_menu_item_set_attribute_value (state->frame.item, g_quark_to_string (state->attribute), value);
g_variant_unref (value);
}
@@ -602,7 +598,7 @@ g_menu_markup_print_string (GString *string,
while (g_menu_attribute_iter_next (attr_iter))
{
- const gchar *name = g_menu_attribute_iter_get_name (attr_iter);
+ const char *name = g_menu_attribute_iter_get_name (attr_iter);
GVariant *value = g_menu_attribute_iter_get_value (attr_iter);
if (g_variant_is_of_type (value, G_VARIANT_TYPE_STRING))
diff --git a/gio/gmenumodel.c b/gio/gmenumodel.c
index e9f8b95..9079448 100644
--- a/gio/gmenumodel.c
+++ b/gio/gmenumodel.c
@@ -112,7 +112,7 @@ G_DEFINE_TYPE (GMenuLinkHashIter, g_menu_link_hash_iter, G_TYPE_MENU_LINK_ITER)
static gboolean
g_menu_link_hash_iter_get_next (GMenuLinkIter *link_iter,
- const gchar **name,
+ const gchar **out_name,
GMenuModel **value)
{
GMenuLinkHashIter *iter = (GMenuLinkHashIter *) link_iter;
@@ -122,10 +122,9 @@ g_menu_link_hash_iter_get_next (GMenuLinkIter *link_iter,
return FALSE;
if (iter->is_quarks)
- *name = g_quark_to_string (GPOINTER_TO_INT (keyptr));
+ *out_name = g_quark_to_string (GPOINTER_TO_INT (keyptr));
else
- *name = keyptr;
-
+ *out_name = keyptr;
*value = g_object_ref (valueptr);
return TRUE;
@@ -268,51 +267,6 @@ G_DEFINE_ABSTRACT_TYPE (GMenuModel, g_menu_model, G_TYPE_OBJECT)
guint g_menu_model_items_changed_signal;
-#define MAKE_QUARK(str) \
- GQuark \
- g_menu_model_get_ ## str ## _quark (void) \
- { \
- static GQuark quark; \
- if G_UNLIKELY (quark == 0) \
- quark = g_quark_from_static_string (#str); \
- return quark; \
- }
-
-/**
- * G_MENU_ATTRIBUTE_ACTION:
- *
- * The "action" attribute.
- **/
-MAKE_QUARK(action)
-
-/**
- * G_MENU_ATTRIBUTE_TARGET:
- *
- * The "target" attribute.
- **/
-MAKE_QUARK(target)
-
-/**
- * G_MENU_ATTRIBUTE_LABEL:
- *
- * The "label" attribute.
- **/
-MAKE_QUARK(label)
-
-/**
- * G_MENU_LINK_SUBMENU:
- *
- * The "submenu" link.
- **/
-MAKE_QUARK(submenu)
-
-/**
- * G_MENU_LINK_SECTION:
- *
- * The "section" link.
- **/
-MAKE_QUARK(section)
-
static GMenuAttributeIter *
g_menu_model_real_iterate_item_attributes (GMenuModel *model,
gint item_index)
@@ -333,7 +287,6 @@ g_menu_model_real_iterate_item_attributes (GMenuModel *model,
iter->is_quarks = TRUE;
result = G_MENU_ATTRIBUTE_ITER (iter);
}
-
else if (string_table)
{
GMenuAttributeHashIter *iter = g_object_new (g_menu_attribute_hash_iter_get_type (), NULL);
@@ -342,7 +295,6 @@ g_menu_model_real_iterate_item_attributes (GMenuModel *model,
iter->is_quarks = FALSE;
result = G_MENU_ATTRIBUTE_ITER (iter);
}
-
else if (dictionary)
{
GMenuAttributeDictIter *iter = g_object_new (g_menu_attribute_dict_iter_get_type (), NULL);
@@ -350,7 +302,6 @@ g_menu_model_real_iterate_item_attributes (GMenuModel *model,
iter->dict = g_variant_ref (dictionary);
result = G_MENU_ATTRIBUTE_ITER (iter);
}
-
else
{
g_critical ("GMenuModel implementation '%s' doesn't override iterate_item_attributes() "
@@ -372,9 +323,10 @@ g_menu_model_real_iterate_item_attributes (GMenuModel *model,
static GVariant *
g_menu_model_real_get_item_attribute_value (GMenuModel *model,
gint item_index,
- GQuark attribute,
+ const gchar *attribute,
const GVariantType *expected_type)
{
+ GQuark attribute_q = g_quark_from_string (attribute);
GHashTable *string_table = NULL;
GHashTable *quark_table = NULL;
GVariant *dictionary = NULL;
@@ -385,7 +337,7 @@ g_menu_model_real_get_item_attribute_value (GMenuModel *model,
if (quark_table != NULL)
{
- value = g_hash_table_lookup (quark_table, GINT_TO_POINTER (attribute));
+ value = g_hash_table_lookup (quark_table, GINT_TO_POINTER (attribute_q));
if (value != NULL)
{
@@ -395,10 +347,9 @@ g_menu_model_real_get_item_attribute_value (GMenuModel *model,
value = NULL;
}
}
-
else if (string_table != NULL)
{
- value = g_hash_table_lookup (string_table, g_quark_to_string (attribute));
+ value = g_hash_table_lookup (string_table, attribute);
if (value != NULL)
{
@@ -408,9 +359,10 @@ g_menu_model_real_get_item_attribute_value (GMenuModel *model,
value = NULL;
}
}
-
else if (dictionary != NULL)
- value = g_variant_lookup_value (dictionary, g_quark_to_string (attribute), expected_type);
+ value = g_variant_lookup_value (dictionary, attribute, expected_type);
+ else
+ g_assert_not_reached ();
if (string_table != NULL)
g_hash_table_unref (string_table);
@@ -420,7 +372,6 @@ g_menu_model_real_get_item_attribute_value (GMenuModel *model,
g_variant_unref (dictionary);
return value;
- return NULL;
}
static GMenuLinkIter *
@@ -442,7 +393,6 @@ g_menu_model_real_iterate_item_links (GMenuModel *model,
iter->is_quarks = TRUE;
result = G_MENU_LINK_ITER (iter);
}
-
else if (string_table)
{
GMenuLinkHashIter *iter = g_object_new (g_menu_link_hash_iter_get_type (), NULL);
@@ -451,7 +401,6 @@ g_menu_model_real_iterate_item_links (GMenuModel *model,
iter->is_quarks = FALSE;
result = G_MENU_LINK_ITER (iter);
}
-
else
{
g_critical ("GMenuModel implementation '%s' doesn't override iterate_item_links() "
@@ -471,8 +420,9 @@ g_menu_model_real_iterate_item_links (GMenuModel *model,
static GMenuModel *
g_menu_model_real_get_item_link (GMenuModel *model,
gint item_index,
- GQuark link)
+ const gchar *link)
{
+ GQuark link_q = g_quark_from_string (link);
GHashTable *string_table = NULL;
GHashTable *quark_table = NULL;
GMenuModel *value = NULL;
@@ -481,10 +431,11 @@ g_menu_model_real_get_item_link (GMenuModel *model,
->get_item_links (model, item_index, &quark_table, &string_table);
if (quark_table != NULL)
- value = g_hash_table_lookup (quark_table, GINT_TO_POINTER (link));
-
+ value = g_hash_table_lookup (quark_table, GINT_TO_POINTER (link_q));
else if (string_table != NULL)
- value = g_hash_table_lookup (string_table, g_quark_to_string (link));
+ value = g_hash_table_lookup (string_table, link);
+ else
+ g_assert_not_reached ();
if (string_table != NULL)
g_hash_table_unref (string_table);
@@ -651,7 +602,7 @@ g_menu_model_iterate_item_attributes (GMenuModel *model,
GVariant *
g_menu_model_get_item_attribute_value (GMenuModel *model,
gint item_index,
- GQuark attribute,
+ const gchar *attribute,
const GVariantType *expected_type)
{
return G_MENU_MODEL_GET_CLASS (model)
@@ -683,7 +634,7 @@ g_menu_model_get_item_attribute_value (GMenuModel *model,
gboolean
g_menu_model_get_item_attribute (GMenuModel *model,
gint item_index,
- GQuark attribute,
+ const gchar *attribute,
const gchar *format_string,
...)
{
@@ -742,7 +693,7 @@ g_menu_model_iterate_item_links (GMenuModel *model,
GMenuModel *
g_menu_model_get_item_link (GMenuModel *model,
gint item_index,
- GQuark link)
+ const gchar *link)
{
return G_MENU_MODEL_GET_CLASS (model)
->get_item_link (model, item_index, link);
@@ -784,7 +735,7 @@ G_DEFINE_ABSTRACT_TYPE (GMenuAttributeIter, g_menu_attribute_iter, G_TYPE_OBJECT
struct _GMenuAttributeIterPrivate
{
- const gchar *name;
+ GQuark name;
GVariant *value;
gboolean valid;
};
@@ -792,7 +743,7 @@ struct _GMenuAttributeIterPrivate
/**
* g_menu_attribute_iter_get_next:
* @iter: a #GMenuAttributeIter
- * @name: (out) (allow-none) (transfer none): the name of the attribute
+ * @out_name: (out) (allow-none) (transfer none): the type of the attribute
* @value: (out) (allow-none) (transfer full): the attribute value
*
* This function combines g_menu_attribute_iter_next() with
@@ -816,9 +767,11 @@ struct _GMenuAttributeIterPrivate
**/
gboolean
g_menu_attribute_iter_get_next (GMenuAttributeIter *iter,
- const gchar **name,
+ const gchar **out_name,
GVariant **value)
{
+ const gchar *name;
+
if (iter->priv->value)
{
g_variant_unref (iter->priv->value);
@@ -826,12 +779,13 @@ g_menu_attribute_iter_get_next (GMenuAttributeIter *iter,
}
iter->priv->valid = G_MENU_ATTRIBUTE_ITER_GET_CLASS (iter)
- ->get_next (iter, &iter->priv->name, &iter->priv->value);
+ ->get_next (iter, &name, &iter->priv->value);
if (iter->priv->valid)
{
- if (name)
- *name = iter->priv->name;
+ iter->priv->name = g_quark_from_string (name);
+ if (out_name)
+ *out_name = g_quark_to_string (iter->priv->name);
if (value)
*value = g_variant_ref (iter->priv->value);
@@ -866,22 +820,19 @@ g_menu_attribute_iter_next (GMenuAttributeIter *iter)
* g_menu_attribute_iter_get_name:
* @iter: a #GMenuAttributeIter
*
- * Gets the name of the attribute at the current iterator position,
- * as a string.
+ * Gets the name of the attribute at the current iterator position, as
+ * a string.
*
* The iterator is not advanced.
*
- * The string is owned by the iterator and remains valid for as long
- * as the iterator is at the current position.
- *
- * Returns: (transfer none): the name of the attribute
+ * Returns: the name of the attribute
**/
const gchar *
g_menu_attribute_iter_get_name (GMenuAttributeIter *iter)
{
- g_return_val_if_fail (iter->priv->valid, NULL);
+ g_return_val_if_fail (iter->priv->valid, 0);
- return iter->priv->name;
+ return g_quark_to_string (iter->priv->name);
}
/**
@@ -934,7 +885,7 @@ G_DEFINE_ABSTRACT_TYPE (GMenuLinkIter, g_menu_link_iter, G_TYPE_OBJECT)
struct _GMenuLinkIterPrivate
{
- const gchar *name;
+ GQuark name;
GMenuModel *value;
gboolean valid;
};
@@ -942,7 +893,7 @@ struct _GMenuLinkIterPrivate
/**
* g_menu_link_iter_get_next:
* @iter: a #GMenuLinkIter
- * @name: (out) (allow-none) (transfer none): the name of the link
+ * @out_name: (out) (allow-none) (transfer none): the name of the link
* @value: (out) (allow-none) (transfer full): the linked #GMenuModel
*
* This function combines g_menu_link_iter_next() with
@@ -951,12 +902,12 @@ struct _GMenuLinkIterPrivate
* First the iterator is advanced to the next (possibly first) link. If
* that fails, then %FALSE is returned and there are no other effects.
*
- * If successful, @name and @value are set to the name and #GMenuModel
+ * If successful, @out_name and @value are set to the name and #GMenuModel
* of the link that has just been advanced to. At this point,
* g_menu_item_get_name() and g_menu_item_get_value() will return the
* same values again.
*
- * The value returned in @name remains valid for as long as the iterator
+ * The value returned in @out_name remains valid for as long as the iterator
* remains at the current position. The value returned in @value must
* be unreffed using g_object_unref() when it is no longer in use.
*
@@ -964,9 +915,11 @@ struct _GMenuLinkIterPrivate
**/
gboolean
g_menu_link_iter_get_next (GMenuLinkIter *iter,
- const gchar **name,
+ const gchar **out_name,
GMenuModel **value)
{
+ const gchar *name;
+
if (iter->priv->value)
{
g_object_unref (iter->priv->value);
@@ -974,12 +927,15 @@ g_menu_link_iter_get_next (GMenuLinkIter *iter,
}
iter->priv->valid = G_MENU_LINK_ITER_GET_CLASS (iter)
- ->get_next (iter, &iter->priv->name, &iter->priv->value);
+ ->get_next (iter, &name, &iter->priv->value);
if (iter->priv->valid)
{
- if (name)
- *name = iter->priv->name;
+ g_assert (name != NULL);
+
+ iter->priv->name = g_quark_from_string (name);
+ if (out_name)
+ *out_name = g_quark_to_string (iter->priv->name);
if (value)
*value = g_object_ref (iter->priv->value);
@@ -1013,22 +969,18 @@ g_menu_link_iter_next (GMenuLinkIter *iter)
* g_menu_link_iter_get_name:
* @iter: a #GMenuLinkIter
*
- * Gets the name of the link at the current iterator position, as a
- * string.
+ * Gets the name of the link at the current iterator position.
*
* The iterator is not advanced.
*
- * The string is owned by the iterator and remains valid for as long as
- * the iterator is at the current position.
- *
- * Returns: (transfer none): the name of the link
+ * Returns: the type of the link
**/
const gchar *
g_menu_link_iter_get_name (GMenuLinkIter *iter)
{
- g_return_val_if_fail (iter->priv->valid, NULL);
+ g_return_val_if_fail (iter->priv->valid, 0);
- return iter->priv->name;
+ return g_quark_to_string (iter->priv->name);
}
/**
@@ -1115,7 +1067,7 @@ g_menu_model_item_iterate_attributes (GMenuModelItem *item)
**/
GVariant *
g_menu_model_item_get_attribute_value (GMenuModelItem *item,
- GQuark attribute,
+ const gchar *attribute,
const GVariantType *expected_type)
{
return g_menu_model_get_item_attribute_value (item->model, item->position, attribute, expected_type);
@@ -1143,7 +1095,7 @@ g_menu_model_item_get_attribute_value (GMenuModelItem *item,
**/
gboolean
g_menu_model_item_get_attribute (GMenuModelItem *item,
- GQuark attribute,
+ const gchar *attribute,
const gchar *format_string,
...)
{
@@ -1195,7 +1147,7 @@ g_menu_model_item_iterate_links (GMenuModelItem *item)
**/
GMenuModel *
g_menu_model_item_get_link (GMenuModelItem *item,
- GQuark link)
+ const gchar *link)
{
return g_menu_model_get_item_link (item->model, item->position, link);
}
diff --git a/gio/gmenumodel.h b/gio/gmenumodel.h
index 154cc69..fe26b5b 100644
--- a/gio/gmenumodel.h
+++ b/gio/gmenumodel.h
@@ -25,21 +25,16 @@
#include <glib-object.h>
#include <gio/giotypes.h>
+#include <gio/gioenumtypes.h>
G_BEGIN_DECLS
-#define G_MENU_ATTRIBUTE_ACTION (g_menu_model_get_action_quark ())
-#define G_MENU_ATTRIBUTE_TARGET (g_menu_model_get_target_quark ())
-#define G_MENU_ATTRIBUTE_LABEL (g_menu_model_get_label_quark ())
-#define G_MENU_LINK_SUBMENU (g_menu_model_get_submenu_quark ())
-#define G_MENU_LINK_SECTION (g_menu_model_get_section_quark ())
-
-GQuark g_menu_model_get_action_quark (void) G_GNUC_CONST;
-GQuark g_menu_model_get_target_quark (void) G_GNUC_CONST;
-GQuark g_menu_model_get_label_quark (void) G_GNUC_CONST;
-GQuark g_menu_model_get_submenu_quark (void) G_GNUC_CONST;
-GQuark g_menu_model_get_section_quark (void) G_GNUC_CONST;
+#define G_MENU_ATTRIBUTE_ACTION "action"
+#define G_MENU_ATTRIBUTE_TARGET "target"
+#define G_MENU_ATTRIBUTE_LABEL "label"
+#define G_MENU_LINK_SUBMENU "submenu"
+#define G_MENU_LINK_SECTION "section"
#define G_TYPE_MENU_MODEL (g_menu_model_get_type ())
#define G_MENU_MODEL(inst) (G_TYPE_CHECK_INSTANCE_CAST ((inst), \
@@ -88,18 +83,18 @@ struct _GMenuModelClass
gint item_index);
GVariant * (*get_item_attribute_value) (GMenuModel *model,
gint item_index,
- GQuark attribute,
+ const gchar *attribute,
const GVariantType *expected_type);
void (*get_item_links) (GMenuModel *model,
gint item_index,
GHashTable **quark_table,
- GHashTable **string_table);
+ GHashTable **string_table);
GMenuLinkIter * (*iterate_item_links) (GMenuModel *model,
gint item_index);
GMenuModel * (*get_item_link) (GMenuModel *model,
gint item_index,
- GQuark link);
+ const gchar *link);
};
GType g_menu_model_get_type (void) G_GNUC_CONST;
@@ -114,18 +109,18 @@ GMenuAttributeIter * g_menu_model_iterate_item_attributes (GMenuMo
gint item_index);
GVariant * g_menu_model_get_item_attribute_value (GMenuModel *model,
gint item_index,
- GQuark attribute,
+ const gchar *attribute,
const GVariantType *expected_type);
gboolean g_menu_model_get_item_attribute (GMenuModel *model,
gint item_index,
- GQuark attribute,
+ const gchar *attribute,
const gchar *format_string,
...);
GMenuLinkIter * g_menu_model_iterate_item_links (GMenuModel *model,
gint item_index);
GMenuModel * g_menu_model_get_item_link (GMenuModel *model,
gint item_index,
- GQuark link);
+ const gchar *link);
void g_menu_model_items_changed (GMenuModel *model,
gint position,
@@ -156,14 +151,14 @@ struct _GMenuAttributeIterClass
GObjectClass parent_class;
gboolean (*get_next) (GMenuAttributeIter *iter,
- const gchar **name,
+ const gchar **out_type,
GVariant **value);
};
GType g_menu_attribute_iter_get_type (void) G_GNUC_CONST;
gboolean g_menu_attribute_iter_get_next (GMenuAttributeIter *iter,
- const gchar **name,
+ const gchar **out_type,
GVariant **value);
gboolean g_menu_attribute_iter_next (GMenuAttributeIter *iter);
const gchar * g_menu_attribute_iter_get_name (GMenuAttributeIter *iter);
@@ -193,14 +188,14 @@ struct _GMenuLinkIterClass
GObjectClass parent_class;
gboolean (*get_next) (GMenuLinkIter *iter,
- const gchar **name,
+ const gchar **out_name,
GMenuModel **value);
};
GType g_menu_link_iter_get_type (void) G_GNUC_CONST;
gboolean g_menu_link_iter_get_next (GMenuLinkIter *iter,
- const gchar **name,
+ const gchar **out_link,
GMenuModel **value);
gboolean g_menu_link_iter_next (GMenuLinkIter *iter);
const gchar * g_menu_link_iter_get_name (GMenuLinkIter *iter);
@@ -215,15 +210,15 @@ struct _GMenuModelItem
GMenuAttributeIter * g_menu_model_item_iterate_attributes (GMenuModelItem *item);
GVariant * g_menu_model_item_get_attribute_value (GMenuModelItem *item,
- GQuark attribute,
+ const gchar *attribute,
const GVariantType *expected_type);
gboolean g_menu_model_item_get_attribute (GMenuModelItem *item,
- GQuark attribute,
+ const gchar *attribute,
const gchar *format_string,
...);
GMenuLinkIter * g_menu_model_item_iterate_links (GMenuModelItem *item);
GMenuModel * g_menu_model_item_get_link (GMenuModelItem *item,
- GQuark link);
+ const gchar *link);
G_END_DECLS
diff --git a/gio/gmenuproxy.c b/gio/gmenuproxy.c
index 18d4285..029fa47 100644
--- a/gio/gmenuproxy.c
+++ b/gio/gmenuproxy.c
@@ -722,7 +722,7 @@ g_menu_proxy_get_n_items (GMenuModel *model)
static void
g_menu_proxy_get_item_attributes (GMenuModel *model,
gint item_index,
- GHashTable **quark_table,
+ GHashTable **attr_table,
GHashTable **string_table,
GVariant **dictionary)
{
@@ -745,7 +745,7 @@ g_menu_proxy_get_item_attributes (GMenuModel *model,
static void
g_menu_proxy_get_item_links (GMenuModel *model,
gint item_index,
- GHashTable **quark_table,
+ GHashTable **attr_table,
GHashTable **string_table)
{
GMenuProxy *proxy = G_MENU_PROXY (model);
diff --git a/gio/tests/gmenumodel.c b/gio/tests/gmenumodel.c
index 77bbaa2..3c63570 100644
--- a/gio/tests/gmenumodel.c
+++ b/gio/tests/gmenumodel.c
@@ -67,7 +67,7 @@ random_menu_get_n_items (GMenuModel *model)
static void
random_menu_get_item_attributes (GMenuModel *model,
gint position,
- GHashTable **quark_table,
+ GHashTable **quarks_table,
GHashTable **string_table,
GVariant **dictionary)
{
@@ -81,14 +81,14 @@ random_menu_get_item_attributes (GMenuModel *model,
static void
random_menu_get_item_links (GMenuModel *model,
gint position,
- GHashTable **quark_table,
- GHashTable **string_table)
+ GHashTable **quarks_table,
+ GHashTable **string_table)
{
RandomMenu *menu = (RandomMenu *) model;
TestItem *item;
item = g_sequence_get (g_sequence_get_iter_at_pos (menu->items, position));
- *quark_table = g_hash_table_ref (item->links);
+ *quarks_table = g_hash_table_ref (item->links);
}
static void
@@ -163,7 +163,7 @@ random_menu_change (RandomMenu *menu,
if (menu->order > 0 && g_rand_boolean (rand))
{
RandomMenu *child;
- GQuark subtype;
+ const gchar *subtype;
child = random_menu_new (rand, menu->order - 1);
@@ -183,7 +183,7 @@ random_menu_change (RandomMenu *menu,
label = "Submenu";
}
- g_hash_table_insert (links, GINT_TO_POINTER (subtype), child);
+ g_hash_table_insert (links, GINT_TO_POINTER (g_quark_from_string (subtype)), child);
}
else
/* label all terminals */
@@ -247,7 +247,7 @@ mirror_menu_get_n_items (GMenuModel *model)
static void
mirror_menu_get_item_attributes (GMenuModel *model,
gint position,
- GHashTable **quark_table,
+ GHashTable **quarks_table,
GHashTable **string_table,
GVariant **dictionary)
{
@@ -261,7 +261,7 @@ mirror_menu_get_item_attributes (GMenuModel *model,
static void
mirror_menu_get_item_links (GMenuModel *model,
gint position,
- GHashTable **quark_table,
+ GHashTable **quarks_table,
GHashTable **string_table)
{
MirrorMenu *menu = (MirrorMenu *) model;
@@ -407,7 +407,7 @@ check_menus_equal (GMenuModel *a,
attr_iter = g_menu_model_iterate_item_attributes (a, i);
while (g_menu_attribute_iter_get_next (attr_iter, &name, &a_value))
{
- b_value = g_menu_model_get_item_attribute_value (b, i, g_quark_from_string (name), NULL);
+ b_value = g_menu_model_get_item_attribute_value (b, i, name, NULL);
equal &= b_value && g_variant_equal (a_value, b_value);
if (b_value)
g_variant_unref (b_value);
@@ -418,7 +418,7 @@ check_menus_equal (GMenuModel *a,
attr_iter = g_menu_model_iterate_item_attributes (b, i);
while (g_menu_attribute_iter_get_next (attr_iter, &name, &b_value))
{
- a_value = g_menu_model_get_item_attribute_value (a, i, g_quark_from_string (name), NULL);
+ a_value = g_menu_model_get_item_attribute_value (a, i, name, NULL);
equal &= a_value && g_variant_equal (a_value, b_value);
if (a_value)
g_variant_unref (a_value);
@@ -429,7 +429,7 @@ check_menus_equal (GMenuModel *a,
link_iter = g_menu_model_iterate_item_links (a, i);
while (g_menu_link_iter_get_next (link_iter, &name, &a_menu))
{
- b_menu = g_menu_model_get_item_link (b, i, g_quark_from_string (name));
+ b_menu = g_menu_model_get_item_link (b, i, name);
equal &= b_menu && check_menus_equal (a_menu, b_menu);
if (b_menu)
g_object_unref (b_menu);
@@ -440,7 +440,7 @@ check_menus_equal (GMenuModel *a,
link_iter = g_menu_model_iterate_item_links (b, i);
while (g_menu_link_iter_get_next (link_iter, &name, &b_menu))
{
- a_menu = g_menu_model_get_item_link (a, i, g_quark_from_string (name));
+ a_menu = g_menu_model_get_item_link (a, i, name);
equal &= a_menu && check_menus_equal (a_menu, b_menu);
if (a_menu)
g_object_unref (a_menu);
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]