Add calls to Gio.ListModel.items_changed in Purple.WhiteboardManager

Sun, 03 Nov 2024 00:08:34 -0500

author
Gary Kramlich <grim@reaperworld.com>
date
Sun, 03 Nov 2024 00:08:34 -0500
changeset 43047
4c23faf5dfb5
parent 43046
eeab15f4576e
child 43048
45a4e977eff7

Add calls to Gio.ListModel.items_changed in Purple.WhiteboardManager

Also added tests for the Gio.ListModel properties and some other random clean
ups.

Testing Done:
Ran the tests under valgrind and called in the turtles for the rest.

Reviewed at https://reviews.imfreedom.org/r/3639/

libpurple/purplewhiteboardmanager.c file | annotate | diff | comparison | revisions
libpurple/purplewhiteboardmanager.h file | annotate | diff | comparison | revisions
libpurple/tests/test_whiteboard_manager.c file | annotate | diff | comparison | revisions
--- a/libpurple/purplewhiteboardmanager.c	Sun Nov 03 00:07:13 2024 -0500
+++ b/libpurple/purplewhiteboardmanager.c	Sun Nov 03 00:08:34 2024 -0500
@@ -247,6 +247,7 @@
                               PurpleWhiteboard *whiteboard, GError **error)
 {
 	gboolean found = FALSE;
+	guint position = 0;
 
 	g_return_val_if_fail(PURPLE_IS_WHITEBOARD_MANAGER(manager), FALSE);
 	g_return_val_if_fail(PURPLE_IS_WHITEBOARD(whiteboard), FALSE);
@@ -263,9 +264,11 @@
 		return FALSE;
 	}
 
+	position = manager->whiteboards->len;
 	g_ptr_array_add(manager->whiteboards, g_object_ref(whiteboard));
 
 	g_signal_emit(manager, signals[SIG_ADDED], 0, whiteboard);
+	g_list_model_items_changed(G_LIST_MODEL(manager), position, 0, 1);
 
 	return TRUE;
 }
@@ -300,6 +303,7 @@
 	g_ptr_array_remove_index(manager->whiteboards, index);
 
 	g_signal_emit(manager, signals[SIG_REMOVED], 0, whiteboard);
+	g_list_model_items_changed(G_LIST_MODEL(manager), index, 1, 0);
 
 	g_object_unref(whiteboard);
 
@@ -308,7 +312,7 @@
 
 PurpleWhiteboard *
 purple_whiteboard_manager_find(PurpleWhiteboardManager *manager,
-                               const gchar *id)
+                               const char *id)
 {
 	PurpleWhiteboard *needle = NULL;
 	gboolean found = FALSE;
--- a/libpurple/purplewhiteboardmanager.h	Sun Nov 03 00:07:13 2024 -0500
+++ b/libpurple/purplewhiteboardmanager.h	Sun Nov 03 00:08:34 2024 -0500
@@ -129,7 +129,7 @@
  * Since: 3.0
  */
 PURPLE_AVAILABLE_IN_3_0
-PurpleWhiteboard *purple_whiteboard_manager_find(PurpleWhiteboardManager *manager, const gchar *id);
+PurpleWhiteboard *purple_whiteboard_manager_find(PurpleWhiteboardManager *manager, const char *id);
 
 G_END_DECLS
 
--- a/libpurple/tests/test_whiteboard_manager.c	Sun Nov 03 00:07:13 2024 -0500
+++ b/libpurple/tests/test_whiteboard_manager.c	Sun Nov 03 00:08:34 2024 -0500
@@ -30,6 +30,28 @@
 	manager = g_object_new(PURPLE_TYPE_WHITEBOARD_MANAGER, NULL);
 
 	g_assert_true(PURPLE_IS_WHITEBOARD_MANAGER(manager));
+	g_assert_true(G_IS_LIST_MODEL(manager));
+
+	g_assert_finalize_object(manager);
+}
+
+static void
+test_purple_whiteboard_manager_properties(void) {
+	PurpleWhiteboardManager *manager = NULL;
+	GType item_type = G_TYPE_INVALID;
+	guint n_items = 0;
+
+	manager = g_object_new(PURPLE_TYPE_WHITEBOARD_MANAGER, NULL);
+
+	g_object_get(
+		G_OBJECT(manager),
+		"item-type", &item_type,
+		"n_items", &n_items,
+		NULL);
+
+	g_assert_true(item_type == PURPLE_TYPE_WHITEBOARD);
+
+	g_assert_cmpuint(n_items, ==, 0);
 
 	g_assert_finalize_object(manager);
 }
@@ -44,6 +66,8 @@
 
 	g_test_add_func("/whiteboard-manager/new",
 	                test_purple_whiteboard_manager_new);
+	g_test_add_func("/whiteboard-manager/properties",
+	                test_purple_whiteboard_manager_properties);
 
 	return g_test_run();
 }

mercurial