[libshumate] marker-layer: Implement shumate_marker_layer_remove_all()
- From: Corentin Noël <corentinnoel src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [libshumate] marker-layer: Implement shumate_marker_layer_remove_all()
- Date: Wed, 10 Mar 2021 21:03:56 +0000 (UTC)
commit 9f7fd9ea43651a7582ea6bae47a0d62bfc5e7c94
Author: Georges Basile Stavracas Neto <georges stavracas gmail com>
Date: Wed Mar 10 08:56:29 2021 -0300
marker-layer: Implement shumate_marker_layer_remove_all()
Implement it, and add a corresponding test too.
shumate/shumate-marker-layer.c | 20 +++++++-------------
tests/marker-layer.c | 26 ++++++++++++++++++++++++++
2 files changed, 33 insertions(+), 13 deletions(-)
---
diff --git a/shumate/shumate-marker-layer.c b/shumate/shumate-marker-layer.c
index ccb022d..c3248d4 100644
--- a/shumate/shumate-marker-layer.c
+++ b/shumate/shumate-marker-layer.c
@@ -464,26 +464,20 @@ shumate_marker_layer_add_marker (ShumateMarkerLayer *layer,
void
shumate_marker_layer_remove_all (ShumateMarkerLayer *layer)
{
- //ClutterActorIter iter;
- //ClutterActor *child;
+ GtkWidget *child;
g_return_if_fail (SHUMATE_IS_MARKER_LAYER (layer));
- /*
- clutter_actor_iter_init (&iter, CLUTTER_ACTOR (layer));
- while (clutter_actor_iter_next (&iter, &child))
+ child = gtk_widget_get_first_child (GTK_WIDGET (layer));
+ while (child)
{
- GObject *marker = G_OBJECT (child);
-
- g_signal_handlers_disconnect_by_func (marker,
- G_CALLBACK (marker_position_notify), layer);
+ GtkWidget *next = gtk_widget_get_next_sibling (child);
- g_signal_handlers_disconnect_by_func (marker,
- G_CALLBACK (marker_move_by_cb), layer);
+ g_signal_handlers_disconnect_by_data (child, layer);
+ gtk_widget_unparent (child);
- clutter_actor_iter_remove (&iter);
+ child = next;
}
- */
}
diff --git a/tests/marker-layer.c b/tests/marker-layer.c
index a6a6fe1..db5d2ec 100644
--- a/tests/marker-layer.c
+++ b/tests/marker-layer.c
@@ -59,6 +59,31 @@ test_marker_layer_remove_marker (void)
g_object_unref (viewport);
}
+static void
+test_marker_layer_remove_all_markers (void)
+{
+ ShumateMarkerLayer *marker_layer;
+ ShumateViewport *viewport;
+ int i;
+
+ viewport = shumate_viewport_new ();
+ marker_layer = shumate_marker_layer_new (viewport);
+
+ for (i = 0; i < 100; i++)
+ {
+ ShumateMarker *point;
+
+ point = shumate_point_new ();
+ shumate_marker_layer_add_marker (marker_layer, point);
+ g_assert_true (gtk_widget_get_parent (GTK_WIDGET (point)) == GTK_WIDGET (marker_layer));
+ }
+
+ shumate_marker_layer_remove_all (marker_layer);
+ g_assert_null (gtk_widget_get_first_child (GTK_WIDGET (marker_layer)));
+
+ g_object_unref (viewport);
+}
+
int
main (int argc, char *argv[])
{
@@ -68,6 +93,7 @@ main (int argc, char *argv[])
g_test_add_func ("/marker-layer/new", test_marker_layer_new);
g_test_add_func ("/marker-layer/add-marker", test_marker_layer_add_marker);
g_test_add_func ("/marker-layer/remove-marker", test_marker_layer_remove_marker);
+ g_test_add_func ("/marker-layer/remove-all-markers", test_marker_layer_remove_all_markers);
return g_test_run ();
}
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]