libpurple/purplemessage.c

changeset 43209
9bdf60700384
parent 43146
37dc8a82f676
child 43211
4be8dd6b2efe
--- a/libpurple/purplemessage.c	Fri Mar 28 00:32:48 2025 -0500
+++ b/libpurple/purplemessage.c	Fri Mar 28 00:48:48 2025 -0500
@@ -33,6 +33,7 @@
 	PurpleConversationMember *author;
 
 	char *contents;
+	PangoAttrList *attributes;
 
 	guint action : 1;
 	guint event : 1;
@@ -53,6 +54,7 @@
 	PROP_0,
 	PROP_ACTION,
 	PROP_ATTACHMENTS,
+	PROP_ATTRIBUTES,
 	PROP_AUTHOR,
 	PROP_CONTENTS,
 	PROP_DELIVERED,
@@ -99,6 +101,9 @@
 	case PROP_ATTACHMENTS:
 		g_value_set_object(value, purple_message_get_attachments(message));
 		break;
+	case PROP_ATTRIBUTES:
+		g_value_set_boxed(value, purple_message_get_attributes(message));
+		break;
 	case PROP_AUTHOR:
 		g_value_set_object(value, purple_message_get_author(message));
 		break;
@@ -197,9 +202,11 @@
 purple_message_finalize(GObject *obj) {
 	PurpleMessage *message = PURPLE_MESSAGE(obj);
 
-	g_free(message->id);
+	g_clear_pointer(&message->id, g_free);
 	g_clear_object(&message->author);
-	g_free(message->contents);
+
+	g_clear_pointer(&message->contents, g_free);
+	g_clear_pointer(&message->attributes, pango_attr_list_unref);
 
 	g_clear_error(&message->error);
 
@@ -214,6 +221,7 @@
 
 static void
 purple_message_init(PurpleMessage *message) {
+	message->attributes = pango_attr_list_new();
 	message->attachments = purple_attachments_new();
 }
 
@@ -255,6 +263,18 @@
 		G_PARAM_READABLE | G_PARAM_STATIC_STRINGS);
 
 	/**
+	 * PurpleMessage:attributes:
+	 *
+	 * The formatting attributes of the message.
+	 *
+	 * Since: 3.0
+	 */
+	properties[PROP_ATTRIBUTES] = g_param_spec_boxed(
+		"attributes", NULL, NULL,
+		PANGO_TYPE_ATTR_LIST,
+		G_PARAM_READABLE | G_PARAM_STATIC_STRINGS);
+
+	/**
 	 * PurpleMessage:author:
 	 *
 	 * The author of the message.
@@ -460,6 +480,13 @@
 	return message->attachments;
 }
 
+PangoAttrList *
+purple_message_get_attributes(PurpleMessage *message) {
+	g_return_val_if_fail(PURPLE_IS_MESSAGE(message), NULL);
+
+	return message->attributes;
+}
+
 PurpleConversationMember *
 purple_message_get_author(PurpleMessage *message) {
 	g_return_val_if_fail(PURPLE_IS_MESSAGE(message), NULL);

mercurial