summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAntónio Fernandes <antoniof@gnome.org>2021-11-25 15:19:48 +0000
committerAntónio Fernandes <antoniof@gnome.org>2021-12-06 00:27:15 +0000
commit79fc62b3c5506f2245ddf7e9c5a900db6347469a (patch)
treef1c6922c3c3d471b09201288e3340f886b00fe1d
parente9ae1add9cccee61d10e724b3d7f3526df8ad32a (diff)
downloadnautilus-79fc62b3c5506f2245ddf7e9c5a900db6347469a.tar.gz
general: Stop using GtkContainer::get_children() and ::foreach()
Add transition wrappers for needed GTK4 methods unavailable in GTK3.
-rw-r--r--src/nautilus-gtk4-helpers.c25
-rw-r--r--src/nautilus-gtk4-helpers.h4
-rw-r--r--src/nautilus-toolbar.c23
-rw-r--r--src/nautilus-window-slot.c22
4 files changed, 40 insertions, 34 deletions
diff --git a/src/nautilus-gtk4-helpers.c b/src/nautilus-gtk4-helpers.c
index 50ee263e5..60da7672a 100644
--- a/src/nautilus-gtk4-helpers.c
+++ b/src/nautilus-gtk4-helpers.c
@@ -19,6 +19,15 @@ gtk_box_append (GtkBox *box,
}
void
+gtk_box_remove (GtkBox *box,
+ GtkWidget *child)
+{
+ g_assert (GTK_IS_BOX (box));
+
+ gtk_container_remove (GTK_CONTAINER (box), child);
+}
+
+void
gtk_overlay_set_child (GtkOverlay *overlay,
GtkWidget *child)
{
@@ -63,3 +72,19 @@ gtk_revealer_set_child (GtkRevealer *revealer,
gtk_container_add (GTK_CONTAINER (revealer), child);
}
+
+GtkWidget *
+gtk_widget_get_first_child (GtkWidget *widget)
+{
+ g_autoptr (GList) children = NULL;
+
+ g_assert (GTK_IS_CONTAINER (widget));
+
+ children = gtk_container_get_children (GTK_CONTAINER (widget));
+ if (children != NULL)
+ {
+ return GTK_WIDGET (children->data);
+ }
+
+ return NULL;
+}
diff --git a/src/nautilus-gtk4-helpers.h b/src/nautilus-gtk4-helpers.h
index b245f1dd6..201183c15 100644
--- a/src/nautilus-gtk4-helpers.h
+++ b/src/nautilus-gtk4-helpers.h
@@ -11,6 +11,8 @@ void gtk_button_set_child (GtkButton *button,
GtkWidget *child);
void gtk_box_append (GtkBox *box,
GtkWidget *child);
+void gtk_box_remove (GtkBox *box,
+ GtkWidget *child);
void gtk_overlay_set_child (GtkOverlay *overlay,
GtkWidget *child);
void gtk_scrolled_window_set_child (GtkScrolledWindow *scrolled_window,
@@ -22,5 +24,7 @@ void gtk_info_bar_add_child (GtkInfoBar *info_bar,
void gtk_revealer_set_child (GtkRevealer *revealer,
GtkWidget *child);
+GtkWidget *gtk_widget_get_first_child (GtkWidget *widget);
+
#endif
G_END_DECLS
diff --git a/src/nautilus-toolbar.c b/src/nautilus-toolbar.c
index 811a774cd..ca699e721 100644
--- a/src/nautilus-toolbar.c
+++ b/src/nautilus-toolbar.c
@@ -1285,17 +1285,13 @@ nautilus_toolbar_set_show_location_entry (NautilusToolbar *self,
}
static void
-container_remove_all_children (GtkContainer *container)
+box_remove_all_children (GtkBox *box)
{
- GList *children;
- GList *child;
-
- children = gtk_container_get_children (container);
- for (child = children; child != NULL; child = g_list_next (child))
+ GtkWidget *child;
+ while ((child = gtk_widget_get_first_child (GTK_WIDGET (box))) != NULL)
{
- gtk_container_remove (container, GTK_WIDGET (child->data));
+ gtk_box_remove (GTK_BOX (box), child);
}
- g_list_free (children);
}
static void
@@ -1329,8 +1325,8 @@ on_slot_toolbar_menu_sections_changed (NautilusToolbar *self,
{
NautilusToolbarMenuSections *new_sections;
- container_remove_all_children (GTK_CONTAINER (self->view_menu_zoom_section));
- container_remove_all_children (GTK_CONTAINER (self->view_menu_extended_section));
+ box_remove_all_children (GTK_BOX (self->view_menu_zoom_section));
+ box_remove_all_children (GTK_BOX (self->view_menu_extended_section));
new_sections = nautilus_window_slot_get_toolbar_menu_sections (slot);
if (new_sections == NULL)
@@ -1460,12 +1456,7 @@ nautilus_toolbar_set_window_slot_real (NautilusToolbar *self,
G_CALLBACK (toolbar_update_appearance), self);
}
- children = gtk_container_get_children (GTK_CONTAINER (self->search_container));
- if (children != NULL)
- {
- gtk_container_remove (GTK_CONTAINER (self->search_container),
- children->data);
- }
+ box_remove_all_children (GTK_BOX (self->search_container));
if (self->window_slot != NULL)
{
diff --git a/src/nautilus-window-slot.c b/src/nautilus-window-slot.c
index 4e834e8aa..d4da30fa5 100644
--- a/src/nautilus-window-slot.c
+++ b/src/nautilus-window-slot.c
@@ -656,27 +656,13 @@ nautilus_window_slot_handle_event (NautilusWindowSlot *self,
}
static void
-remove_all_extra_location_widgets (GtkWidget *widget,
- gpointer data)
+nautilus_window_slot_remove_extra_location_widgets (NautilusWindowSlot *self)
{
- NautilusWindowSlot *self = data;
- NautilusDirectory *directory;
-
- directory = nautilus_directory_get (self->location);
- if (widget != GTK_WIDGET (self->query_editor))
+ GtkWidget *widget;
+ while ((widget = gtk_widget_get_first_child (self->extra_location_widgets)) != NULL)
{
- gtk_container_remove (GTK_CONTAINER (self->extra_location_widgets), widget);
+ gtk_box_remove (GTK_BOX (self->extra_location_widgets), widget);
}
-
- nautilus_directory_unref (directory);
-}
-
-static void
-nautilus_window_slot_remove_extra_location_widgets (NautilusWindowSlot *self)
-{
- gtk_container_foreach (GTK_CONTAINER (self->extra_location_widgets),
- remove_all_extra_location_widgets,
- self);
}
static void