[libadwaita/ebassi/tagged-entry: 19/20] Add a name property to AdwTag
- From: Emmanuele Bassi <ebassi src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [libadwaita/ebassi/tagged-entry: 19/20] Add a name property to AdwTag
- Date: Mon, 14 Mar 2022 18:46:42 +0000 (UTC)
commit 0ccdb7278dd5e585ae231db40b35d24a5054b843
Author: Emmanuele Bassi <ebassi gnome org>
Date: Mon Mar 7 12:26:21 2022 +0000
Add a name property to AdwTag
We can use it for debugging purposes, or for styling, just like
GtkWidget:name.
src/adw-tag.c | 65 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
src/adw-tag.h | 7 ++++++-
2 files changed, 71 insertions(+), 1 deletion(-)
---
diff --git a/src/adw-tag.c b/src/adw-tag.c
index 3fa59390..c8468473 100644
--- a/src/adw-tag.c
+++ b/src/adw-tag.c
@@ -20,6 +20,8 @@ struct _AdwTag
{
GObject parent_instance;
+ char *name;
+
char *action_name;
GVariant *action_target;
@@ -41,6 +43,7 @@ enum
PROP_TAG_ACTION_NAME,
PROP_TAG_ACTION_TARGET,
PROP_TAG_HAS_ICON,
+ PROP_TAG_NAME,
N_TAG_PROPS
};
@@ -54,6 +57,7 @@ adw_tag_dispose (GObject *gobject)
{
AdwTag *self = ADW_TAG (gobject);
+ g_clear_pointer (&self->name, g_free);
g_clear_pointer (&self->action_name, g_free);
g_clear_pointer (&self->action_target, g_variant_unref);
@@ -97,6 +101,11 @@ adw_tag_set_property (GObject *gobject,
adw_tag_set_action_target_value (self, g_value_get_variant (value));
break;
+ case PROP_TAG_NAME:
+ g_free (self->name);
+ self->name = g_value_dup_string (value);
+ break;
+
default:
G_OBJECT_WARN_INVALID_PROPERTY_ID (gobject, prop_id, pspec);
}
@@ -139,6 +148,10 @@ adw_tag_get_property (GObject *gobject,
g_value_set_boolean (value, adw_tag_has_icon (self));
break;
+ case PROP_TAG_NAME:
+ g_value_set_string (value, self->name);
+ break;
+
default:
G_OBJECT_WARN_INVALID_PROPERTY_ID (gobject, prop_id, pspec);
}
@@ -258,6 +271,24 @@ adw_tag_class_init (AdwTagClass *klass)
G_PARAM_READABLE |
G_PARAM_STATIC_STRINGS |
G_PARAM_EXPLICIT_NOTIFY);
+ /**
+ * AdwTag:name:
+ *
+ * The name of the tag.
+ *
+ * The name is used for debugging purposes, and for styling.
+ *
+ * There is no duplicate check for tags with the same name.
+ *
+ * Since: 1.2
+ */
+ tag_props[PROP_TAG_NAME] =
+ g_param_spec_string ("name", NULL, NULL,
+ NULL,
+ G_PARAM_READWRITE |
+ G_PARAM_CONSTRUCT_ONLY |
+ G_PARAM_STATIC_STRINGS |
+ G_PARAM_EXPLICIT_NOTIFY);
g_object_class_install_properties (gobject_class, N_TAG_PROPS, tag_props);
}
@@ -283,6 +314,22 @@ adw_tag_new (void)
return g_object_new (ADW_TYPE_TAG, NULL);
}
+/**
+ * adw_tag_new_with_name:
+ * @name: the name of the tag
+ *
+ * Creates a new tag object with the given @name.
+ *
+ * Returns: (transfer full): the newly created tag
+ *
+ * Since: 1.2
+ */
+AdwTag *
+adw_tag_new_with_name (const char *name)
+{
+ return g_object_new (ADW_TYPE_TAG, "name", name, NULL);
+}
+
/**
* adw_tag_get_label:
* @self: the tag we want to query
@@ -653,4 +700,22 @@ adw_tag_set_detailed_action_name (AdwTag *self,
g_clear_pointer (&name, g_free);
}
+/**
+ * adw_tag_get_name:
+ * @self: a tag
+ *
+ * Retrieves the name of the tag set using [method@Tag.set_name].
+ *
+ * Returns: (transfer none) (nullable): the name of the tag
+ *
+ * Since: 1.2
+ */
+const char *
+adw_tag_get_name (AdwTag *self)
+{
+ g_return_val_if_fail (ADW_IS_TAG (self), NULL);
+
+ return self->name;
+}
+
/* }}} */
diff --git a/src/adw-tag.h b/src/adw-tag.h
index 59993cad..baa9e7aa 100644
--- a/src/adw-tag.h
+++ b/src/adw-tag.h
@@ -19,7 +19,9 @@ ADW_AVAILABLE_IN_ALL
G_DECLARE_FINAL_TYPE (AdwTag, adw_tag, ADW, TAG, GObject)
ADW_AVAILABLE_IN_ALL
-AdwTag *adw_tag_new (void);
+AdwTag *adw_tag_new (void);
+ADW_AVAILABLE_IN_ALL
+AdwTag *adw_tag_new_with_name (const char *name);
ADW_AVAILABLE_IN_ALL
const char *adw_tag_get_label (AdwTag *self);
@@ -46,6 +48,9 @@ void adw_tag_set_paintable (AdwTag *self,
ADW_AVAILABLE_IN_ALL
gboolean adw_tag_has_icon (AdwTag *self);
+ADW_AVAILABLE_IN_ALL
+const char *adw_tag_get_name (AdwTag *self);
+
ADW_AVAILABLE_IN_ALL
const char *adw_tag_get_action_name (AdwTag *self);
ADW_AVAILABLE_IN_ALL
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]