Sun, 03 Nov 2024 00:08:34 -0500
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/
--- 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(); }