summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorGeorges Basile Stavracas Neto <georges.stavracas@gmail.com>2017-04-10 20:22:04 -0300
committerGeorges Basile Stavracas Neto <georges.stavracas@gmail.com>2017-04-10 20:22:04 -0300
commit707c408f07bea1dfc691196eaacf942612a4fd06 (patch)
treed5b54ef50fd3c10dc175b9363a0982c37448790b
parent0dc618d09198d2f9f869116ea4559130d889087e (diff)
downloadnautilus-707c408f07bea1dfc691196eaacf942612a4fd06.tar.gz
project: update NautilusGtkPlacesView from master
GtkPlacesView now supports monitoring networks.
-rw-r--r--src/gtk/nautilusgtkplacesview.c38
1 files changed, 38 insertions, 0 deletions
diff --git a/src/gtk/nautilusgtkplacesview.c b/src/gtk/nautilusgtkplacesview.c
index 2de53fc14..bccebeaf5 100644
--- a/src/gtk/nautilusgtkplacesview.c
+++ b/src/gtk/nautilusgtkplacesview.c
@@ -55,6 +55,7 @@ struct _NautilusGtkPlacesViewPrivate
GFile *server_list_file;
GFileMonitor *server_list_monitor;
+ GFileMonitor *network_monitor;
GCancellable *cancellable;
@@ -416,6 +417,7 @@ nautilus_gtk_places_view_destroy (GtkWidget *widget)
priv->destroyed = 1;
g_signal_handlers_disconnect_by_func (priv->volume_monitor, update_places, widget);
+ g_signal_handlers_disconnect_by_func (priv->network_monitor, update_places, widget);
g_cancellable_cancel (priv->cancellable);
g_cancellable_cancel (priv->networks_fetching_cancellable);
@@ -438,6 +440,7 @@ nautilus_gtk_places_view_finalize (GObject *object)
g_clear_object (&priv->server_list_file);
g_clear_object (&priv->server_list_monitor);
g_clear_object (&priv->volume_monitor);
+ g_clear_object (&priv->network_monitor);
g_clear_object (&priv->cancellable);
g_clear_object (&priv->networks_fetching_cancellable);
g_clear_object (&priv->path_size_group);
@@ -944,6 +947,40 @@ update_network_state (NautilusGtkPlacesView *view)
}
static void
+monitor_network (NautilusGtkPlacesView *self)
+{
+ NautilusGtkPlacesViewPrivate *priv;
+ GFile *network_file;
+ GError *error;
+
+ priv = nautilus_gtk_places_view_get_instance_private (self);
+
+ if (priv->network_monitor)
+ return;
+
+ error = NULL;
+ network_file = g_file_new_for_uri ("network:///");
+ priv->network_monitor = g_file_monitor (network_file,
+ G_FILE_MONITOR_NONE,
+ NULL,
+ &error);
+
+ g_clear_object (&network_file);
+
+ if (error)
+ {
+ g_warning ("Error monitoring network: %s", error->message);
+ g_clear_error (&error);
+ return;
+ }
+
+ g_signal_connect_swapped (priv->network_monitor,
+ "changed",
+ G_CALLBACK (update_places),
+ self);
+}
+
+static void
populate_networks (NautilusGtkPlacesView *view,
GFileEnumerator *enumerator,
GList *detected_networks)
@@ -1022,6 +1059,7 @@ network_enumeration_next_files_finished (GObject *source_object,
if (!priv->destroyed)
{
update_network_state (view);
+ monitor_network (view);
update_loading (view);
}
}