[Xfce4-commits] <thunar:jannis/new-shortcuts-pane> Squashme: Remove volume/mount shortcuts properly (unless persistent).
Jannis Pohlmann
noreply at xfce.org
Sun Nov 6 17:42:01 CET 2011
Updating branch refs/heads/jannis/new-shortcuts-pane
to fbe09422f8193865eb415068a7706bc5484c5bee (commit)
from 6d9c903dab4c5f175215e05765a0452abd537089 (commit)
commit fbe09422f8193865eb415068a7706bc5484c5bee
Author: Jannis Pohlmann <jannis at xfce.org>
Date: Sun Nov 6 17:40:02 2011 +0100
Squashme: Remove volume/mount shortcuts properly (unless persistent).
thunar/thunar-shortcut-group.c | 62 ++++++++++++++++++++++
thunar/thunar-shortcut-group.h | 28 ++++++----
thunar/thunar-shortcuts-view.c | 111 ++++++++++++++++++++++++++++------------
3 files changed, 156 insertions(+), 45 deletions(-)
diff --git a/thunar/thunar-shortcut-group.c b/thunar/thunar-shortcut-group.c
index f774bf4..f4ff2fa 100644
--- a/thunar/thunar-shortcut-group.c
+++ b/thunar/thunar-shortcut-group.c
@@ -435,3 +435,65 @@ thunar_shortcut_group_update_selection (ThunarShortcutGroup *group,
g_list_free (children);
}
+
+
+
+void
+thunar_shortcut_group_remove_volume_shortcut (ThunarShortcutGroup *group,
+ GVolume *volume)
+{
+ ThunarShortcut *shortcut;
+ GVolume *shortcut_volume;
+ GList *children;
+ GList *iter;
+
+ _thunar_return_if_fail (THUNAR_IS_SHORTCUT_GROUP (group));
+ _thunar_return_if_fail (G_IS_VOLUME (volume));
+
+ children = gtk_container_get_children (GTK_CONTAINER (group->shortcuts));
+
+ for (iter = children; iter != NULL; iter = iter->next)
+ {
+ shortcut = THUNAR_SHORTCUT (iter->data);
+ shortcut_volume = thunar_shortcut_get_volume (shortcut);
+
+ if (shortcut_volume == volume)
+ gtk_container_remove (GTK_CONTAINER (group->shortcuts),
+ GTK_WIDGET (shortcut));
+ }
+
+ g_list_free (children);
+}
+
+
+
+void
+thunar_shortcut_group_remove_mount_shortcut (ThunarShortcutGroup *group,
+ GMount *mount)
+{
+ ThunarShortcut *shortcut;
+ GMount *shortcut_mount;
+ GList *children;
+ GList *iter;
+
+ _thunar_return_if_fail (THUNAR_IS_SHORTCUT_GROUP (group));
+ _thunar_return_if_fail (G_IS_MOUNT (mount));
+
+ children = gtk_container_get_children (GTK_CONTAINER (group->shortcuts));
+
+ for (iter = children; iter != NULL; iter = iter->next)
+ {
+ shortcut = THUNAR_SHORTCUT (iter->data);
+
+ if (!thunar_shortcut_get_persistent (shortcut))
+ {
+ shortcut_mount = thunar_shortcut_get_mount (shortcut);
+
+ if (shortcut_mount == mount)
+ gtk_container_remove (GTK_CONTAINER (group->shortcuts),
+ GTK_WIDGET (shortcut));
+ }
+ }
+
+ g_list_free (children);
+}
diff --git a/thunar/thunar-shortcut-group.h b/thunar/thunar-shortcut-group.h
index 7112b33..0590d09 100644
--- a/thunar/thunar-shortcut-group.h
+++ b/thunar/thunar-shortcut-group.h
@@ -37,18 +37,22 @@ typedef struct _ThunarShortcutGroupPrivate ThunarShortcutGroupPrivate;
typedef struct _ThunarShortcutGroupClass ThunarShortcutGroupClass;
typedef struct _ThunarShortcutGroup ThunarShortcutGroup;
-GType thunar_shortcut_group_get_type (void) G_GNUC_CONST;
-
-GtkWidget *thunar_shortcut_group_new (const gchar *label,
- ThunarShortcutType accepted_types);
-gboolean thunar_shortcut_group_try_add_shortcut (ThunarShortcutGroup *group,
- ThunarShortcut *shortcut);
-void thunar_shortcut_group_unselect_shortcuts (ThunarShortcutGroup *group,
- ThunarShortcut *exception);
-void thunar_shortcut_group_unprelight_shortcuts (ThunarShortcutGroup *group,
- ThunarShortcut *exception);
-void thunar_shortcut_group_update_selection (ThunarShortcutGroup *group,
- ThunarFile *file);
+GType thunar_shortcut_group_get_type (void) G_GNUC_CONST;
+
+GtkWidget *thunar_shortcut_group_new (const gchar *label,
+ ThunarShortcutType accepted_types);
+gboolean thunar_shortcut_group_try_add_shortcut (ThunarShortcutGroup *group,
+ ThunarShortcut *shortcut);
+void thunar_shortcut_group_unselect_shortcuts (ThunarShortcutGroup *group,
+ ThunarShortcut *exception);
+void thunar_shortcut_group_unprelight_shortcuts (ThunarShortcutGroup *group,
+ ThunarShortcut *exception);
+void thunar_shortcut_group_update_selection (ThunarShortcutGroup *group,
+ ThunarFile *file);
+void thunar_shortcut_group_remove_volume_shortcut (ThunarShortcutGroup *group,
+ GVolume *volume);
+void thunar_shortcut_group_remove_mount_shortcut (ThunarShortcutGroup *group,
+ GMount *mount);
G_END_DECLS
diff --git a/thunar/thunar-shortcuts-view.c b/thunar/thunar-shortcuts-view.c
index f007930..3990774 100644
--- a/thunar/thunar-shortcuts-view.c
+++ b/thunar/thunar-shortcuts-view.c
@@ -104,6 +104,18 @@ static void thunar_shortcuts_view_volume_added (Thunar
static void thunar_shortcuts_view_mount_added (ThunarShortcutsView *view,
GMount *mount,
GVolumeMonitor *monitor);
+static void thunar_shortcuts_view_volume_removed (ThunarShortcutsView *view,
+ GVolume *volume,
+ GVolumeMonitor *monitor);
+static void thunar_shortcuts_view_remove_volume_shortcut (ThunarShortcutsView *view,
+ ThunarShortcutGroup *group,
+ gpointer user_data);
+static void thunar_shortcuts_view_mount_removed (ThunarShortcutsView *view,
+ GMount *mount,
+ GVolumeMonitor *monitor);
+static void thunar_shortcuts_view_remove_mount_shortcut (ThunarShortcutsView *view,
+ ThunarShortcutGroup *group,
+ gpointer user_data);
static void thunar_shortcuts_view_add_shortcut (ThunarShortcutsView *view,
ThunarShortcut *shortcut);
static void thunar_shortcuts_view_shortcut_activated (ThunarShortcutsView *view,
@@ -126,27 +138,9 @@ static void thunar_shortcuts_view_open (Thunar
ThunarFile *file,
gboolean new_window);
#if 0
-static void thunar_shortcuts_view_row_inserted (ThunarShortcutsView *view,
- GtkTreePath *path,
- GtkTreeIter *iter,
- GtkTreeModel *model);
static void thunar_shortcuts_view_row_deleted (ThunarShortcutsView *view,
GtkTreePath *path,
GtkTreeModel *model);
-static void thunar_shortcuts_view_row_changed (ThunarShortcutsView *view,
- GtkTreePath *path,
- GtkTreeIter *iter,
- GtkTreeModel *model);
-static gboolean thunar_shortcuts_view_flash_expander (gpointer user_data);
-static GtkWidget * thunar_shortcuts_view_get_expander_at (ThunarShortcutsView *view,
- gint index);
-static void thunar_shortcuts_view_row_activated (ThunarShortcutsView *view,
- ThunarFile *file,
- gboolean open_in_new_window,
- ThunarShortcutRow *row);
-static void thunar_shortcuts_view_row_state_changed (ThunarShortcutsView *view,
- GtkStateType previous_state,
- ThunarShortcutRow *row);
static gboolean thunar_shortcuts_view_row_context_menu (ThunarShortcutsView *view,
GtkWidget *widget);
static void thunar_shortcuts_view_row_open (ThunarShortcutsView *view);
@@ -161,15 +155,6 @@ static ThunarShortcutRow *thunar_shortcuts_view_get_selected_row (Thunar
static void thunar_shortcuts_view_find_selected_row (ThunarShortcutsView *view,
ThunarShortcutRow *row,
gpointer user_data);
-static void thunar_shortcuts_view_foreach_row (ThunarShortcutsView *view,
- ThunarShortcutsViewForeachRowFunc func,
- gpointer user_data);
-static void thunar_shortcuts_view_unselect_rows (ThunarShortcutsView *view,
- ThunarShortcutRow *row,
- gpointer user_data);
-static void thunar_shortcuts_view_unprelight_rows (ThunarShortcutsView *view,
- ThunarShortcutRow *row,
- gpointer user_data);
#endif
static void thunar_shortcuts_view_update_selection (ThunarShortcutsView *view,
ThunarShortcutGroup *group,
@@ -1133,16 +1118,12 @@ thunar_shortcuts_view_load_volumes (gpointer user_data)
/* be notified of new and removed volumes on the system */
g_signal_connect_swapped (view->volume_monitor, "volume-added",
G_CALLBACK (thunar_shortcuts_view_volume_added), view);
-#if 0
g_signal_connect_swapped (view->volume_monitor, "volume-removed",
G_CALLBACK (thunar_shortcuts_view_volume_removed), view);
-#endif
g_signal_connect_swapped (view->volume_monitor, "mount-added",
G_CALLBACK (thunar_shortcuts_view_mount_added), view);
-#if 0
g_signal_connect_swapped (view->volume_monitor, "mount-removed",
G_CALLBACK (thunar_shortcuts_view_mount_removed), view);
-#endif
/* reset the load idle ID */
view->load_idle_id = 0;
@@ -1197,9 +1178,41 @@ thunar_shortcuts_view_volume_added (ThunarShortcutsView *view,
static void
+thunar_shortcuts_view_volume_removed (ThunarShortcutsView *view,
+ GVolume *volume,
+ GVolumeMonitor *monitor)
+{
+ _thunar_return_if_fail (THUNAR_IS_SHORTCUTS_VIEW (view));
+ _thunar_return_if_fail (G_IS_VOLUME (volume));
+ _thunar_return_if_fail (G_IS_VOLUME_MONITOR (monitor));
+
+ thunar_shortcuts_view_foreach_group (view,
+ thunar_shortcuts_view_remove_volume_shortcut,
+ volume);
+}
+
+
+
+static void
+thunar_shortcuts_view_remove_volume_shortcut (ThunarShortcutsView *view,
+ ThunarShortcutGroup *group,
+ gpointer user_data)
+{
+ GVolume *volume = G_VOLUME (user_data);
+
+ _thunar_return_if_fail (THUNAR_IS_SHORTCUTS_VIEW (view));
+ _thunar_return_if_fail (THUNAR_IS_SHORTCUT_GROUP (group));
+ _thunar_return_if_fail (G_IS_VOLUME (volume));
+
+ thunar_shortcut_group_remove_volume_shortcut (group, volume);
+}
+
+
+
+static void
thunar_shortcuts_view_mount_added (ThunarShortcutsView *view,
- GMount *mount,
- GVolumeMonitor *monitor)
+ GMount *mount,
+ GVolumeMonitor *monitor)
{
ThunarShortcutType shortcut_type;
ThunarShortcut *shortcut;
@@ -1255,6 +1268,38 @@ thunar_shortcuts_view_mount_added (ThunarShortcutsView *view,
static void
+thunar_shortcuts_view_mount_removed (ThunarShortcutsView *view,
+ GMount *mount,
+ GVolumeMonitor *monitor)
+{
+ _thunar_return_if_fail (THUNAR_IS_SHORTCUTS_VIEW (view));
+ _thunar_return_if_fail (G_IS_MOUNT (mount));
+ _thunar_return_if_fail (G_IS_VOLUME_MONITOR (monitor));
+
+ thunar_shortcuts_view_foreach_group (view,
+ thunar_shortcuts_view_remove_mount_shortcut,
+ mount);
+}
+
+
+
+static void
+thunar_shortcuts_view_remove_mount_shortcut (ThunarShortcutsView *view,
+ ThunarShortcutGroup *group,
+ gpointer user_data)
+{
+ GMount *mount = G_MOUNT (user_data);
+
+ _thunar_return_if_fail (THUNAR_IS_SHORTCUTS_VIEW (view));
+ _thunar_return_if_fail (THUNAR_IS_SHORTCUT_GROUP (group));
+ _thunar_return_if_fail (G_IS_MOUNT (mount));
+
+ thunar_shortcut_group_remove_mount_shortcut (group, mount);
+}
+
+
+
+static void
thunar_shortcuts_view_add_shortcut (ThunarShortcutsView *view,
ThunarShortcut *shortcut)
{
More information about the Xfce4-commits
mailing list