summaryrefslogtreecommitdiff
path: root/lib
diff options
context:
space:
mode:
authorAlexander Mikhaylenko <alexm@gnome.org>2022-02-16 13:45:21 +0500
committerMarge Bot <marge-bot@gnome.org>2022-02-18 15:47:03 +0000
commit9464fe084317f8648261b081bd2b494636422ec2 (patch)
tree161a6e2f772bbd9ab4a50d5186d812ff2614fa82 /lib
parent646544c089ed88e579e47bb34f977f95a3336d41 (diff)
downloadepiphany-9464fe084317f8648261b081bd2b494636422ec2.tar.gz
Stop using gtk_container_get_children() for GtkListBox and GtkFlowBox
Leave one instance in EphyHistoryDialog that gets the last child of the listbox - that would be painful to do with gtk_list_box_get_row_at_index() and in GTK4 we'll just use gtk_widget_get_last_child() instead. Part-of: <https://gitlab.gnome.org/GNOME/epiphany/-/merge_requests/1072>
Diffstat (limited to 'lib')
-rw-r--r--lib/widgets/ephy-downloads-popover.c36
1 files changed, 11 insertions, 25 deletions
diff --git a/lib/widgets/ephy-downloads-popover.c b/lib/widgets/ephy-downloads-popover.c
index c91857671..86e2541f0 100644
--- a/lib/widgets/ephy-downloads-popover.c
+++ b/lib/widgets/ephy-downloads-popover.c
@@ -95,29 +95,22 @@ static void
download_removed_cb (EphyDownloadsPopover *popover,
EphyDownload *download)
{
- g_autoptr (GList) children = NULL;
- GList *l;
EphyDownloadsManager *manager;
-
- children = gtk_container_get_children (GTK_CONTAINER (popover->downloads_box));
+ GtkListBoxRow *row;
+ int i = 0;
/* Hide the popover before removing the last download widget so it "crumples"
* more smoothly */
- if (g_list_length (children) == 1)
+ if (!gtk_list_box_get_row_at_index (GTK_LIST_BOX (popover->downloads_box), 2))
gtk_widget_hide (GTK_WIDGET (popover));
- for (l = children; l; l = g_list_next (l)) {
- GtkWidget *widget;
-
- if (!GTK_IS_LIST_BOX_ROW (l->data))
- continue;
-
- widget = gtk_bin_get_child (GTK_BIN (l->data));
+ while ((row = gtk_list_box_get_row_at_index (GTK_LIST_BOX (popover->downloads_box), i++))) {
+ GtkWidget *widget = gtk_bin_get_child (GTK_BIN (row));
if (!EPHY_IS_DOWNLOAD_WIDGET (widget))
continue;
if (ephy_download_widget_get_download (EPHY_DOWNLOAD_WIDGET (widget)) == download) {
- gtk_widget_destroy (l->data);
+ gtk_container_remove (GTK_CONTAINER (popover->downloads_box), GTK_WIDGET (row));
break;
}
}
@@ -129,31 +122,24 @@ download_removed_cb (EphyDownloadsPopover *popover,
static void
clear_button_clicked_cb (EphyDownloadsPopover *popover)
{
- g_autoptr (GList) children = NULL;
- GList *l;
EphyDownloadsManager *manager;
+ GtkListBoxRow *row;
gtk_widget_hide (GTK_WIDGET (popover));
manager = ephy_embed_shell_get_downloads_manager (ephy_embed_shell_get_default ());
g_signal_handlers_block_by_func (manager, download_removed_cb, popover);
- children = gtk_container_get_children (GTK_CONTAINER (popover->downloads_box));
- for (l = children; l; l = g_list_next (l)) {
+ while ((row = gtk_list_box_get_row_at_index (GTK_LIST_BOX (popover->downloads_box), 0))) {
GtkWidget *widget;
EphyDownload *download;
- if (!GTK_IS_LIST_BOX_ROW (l->data))
- continue;
-
- widget = gtk_bin_get_child (GTK_BIN (l->data));
- if (!EPHY_IS_DOWNLOAD_WIDGET (widget))
- continue;
-
+ widget = gtk_bin_get_child (GTK_BIN (row));
download = ephy_download_widget_get_download (EPHY_DOWNLOAD_WIDGET (widget));
+
if (!ephy_download_is_active (download)) {
ephy_downloads_manager_remove_download (manager, download);
- gtk_widget_destroy (l->data);
+ gtk_container_remove (GTK_CONTAINER (popover->downloads_box), GTK_WIDGET (row));
}
}
gtk_widget_set_sensitive (popover->clear_button, FALSE);