diff --git a/thunar/thunar-shortcuts-model.c b/thunar/thunar-shortcuts-model.c index 2aae575..9b64973 100644 --- a/thunar/thunar-shortcuts-model.c +++ b/thunar/thunar-shortcuts-model.c @@ -131,6 +131,9 @@ static void thunar_shortcuts_model_volume_removed (GVolumeMoni static void thunar_shortcuts_model_volume_changed (GVolumeMonitor *monitor, GVolume *volume, ThunarShortcutsModel *model); +static void thunar_shortcuts_model_mount_changed (GVolumeMonitor *volume_monitor, + GMount *mount, + ThunarShortcutsModel *model); static void thunar_shortcut_free (ThunarShortcut *shortcut, ThunarShortcutsModel *model); @@ -240,6 +243,9 @@ thunar_shortcuts_model_init (ThunarShortcutsModel *model) g_signal_connect (model->volume_monitor, "volume-added", G_CALLBACK (thunar_shortcuts_model_volume_added), model); g_signal_connect (model->volume_monitor, "volume-removed", G_CALLBACK (thunar_shortcuts_model_volume_removed), model); g_signal_connect (model->volume_monitor, "volume-changed", G_CALLBACK (thunar_shortcuts_model_volume_changed), model); + g_signal_connect (model->volume_monitor, "mount-added", G_CALLBACK (thunar_shortcuts_model_mount_changed), model); + g_signal_connect (model->volume_monitor, "mount-removed", G_CALLBACK (thunar_shortcuts_model_mount_changed), model); + g_signal_connect (model->volume_monitor, "mount-changed", G_CALLBACK (thunar_shortcuts_model_mount_changed), model); /* add the home folder to the system paths */ home = thunar_g_file_new_for_home (); @@ -539,7 +545,9 @@ thunar_shortcuts_model_get_value (GtkTreeModel *tree_model, if (shortcut->volume != NULL) { if (thunar_g_volume_is_removable (shortcut->volume) - && thunar_g_volume_is_present (shortcut->volume)) + && thunar_g_volume_is_present (shortcut->volume) + && (thunar_g_volume_is_mounted (shortcut->volume) + || g_volume_can_eject (shortcut->volume))) { g_value_set_static_string (value, "media-eject"); } @@ -1273,6 +1281,28 @@ thunar_shortcuts_model_volume_removed (GVolumeMonitor *volume_monitor, static void +thunar_shortcuts_model_mount_changed (GVolumeMonitor *volume_monitor, + GMount *mount, + ThunarShortcutsModel *model) +{ + GVolume *volume; + + _thunar_return_if_fail (G_IS_VOLUME_MONITOR (volume_monitor)); + _thunar_return_if_fail (model->volume_monitor == volume_monitor); + _thunar_return_if_fail (G_IS_MOUNT (mount)); + _thunar_return_if_fail (THUNAR_IS_SHORTCUTS_MODEL (model)); + + volume = g_mount_get_volume (mount); + + if (volume == NULL) + return; + + thunar_shortcuts_model_volume_changed (volume_monitor, volume, model); +} + + + +static void thunar_shortcut_free (ThunarShortcut *shortcut, ThunarShortcutsModel *model) {