forked from AuroraMiddleware/gtk
Use GtkTrashMonitor instead of an API to set the trash state
This lets us remove two entry points, gtk_places_sidebar_set_show_trash(), and gtk_places_sidebar_set_trash_is_full(). Signed-off-by: Federico Mena Quintero <federico@gnome.org>
This commit is contained in:
parent
ee261203cb
commit
439a770efa
@ -81,6 +81,7 @@
|
||||
#include "gtkseparatormenuitem.h"
|
||||
#include "gtksettings.h"
|
||||
#include "gtkstock.h"
|
||||
#include "gtktrashmonitor.h"
|
||||
#include "gtktreeselection.h"
|
||||
#include "gtktreednd.h"
|
||||
#include "gtktypebuiltins.h"
|
||||
@ -92,13 +93,17 @@
|
||||
#define DO_NOT_COMPILE 0
|
||||
|
||||
struct _GtkPlacesSidebar {
|
||||
GtkScrolledWindow parent;
|
||||
GtkTreeView *tree_view;
|
||||
GtkCellRenderer *eject_icon_cell_renderer;
|
||||
char *uri;
|
||||
GtkListStore *store;
|
||||
GtkBookmarksManager *bookmarks_manager;
|
||||
GVolumeMonitor *volume_monitor;
|
||||
GtkScrolledWindow parent;
|
||||
|
||||
GtkTreeView *tree_view;
|
||||
GtkCellRenderer *eject_icon_cell_renderer;
|
||||
char *uri;
|
||||
GtkListStore *store;
|
||||
GtkBookmarksManager *bookmarks_manager;
|
||||
GVolumeMonitor *volume_monitor;
|
||||
GtkTrashMonitor *trash_monitor;
|
||||
|
||||
gulong trash_monitor_changed_id;
|
||||
|
||||
gboolean devices_header_added;
|
||||
gboolean bookmarks_header_added;
|
||||
@ -121,8 +126,6 @@ struct _GtkPlacesSidebar {
|
||||
char *hostname;
|
||||
|
||||
guint show_desktop : 1;
|
||||
guint show_trash : 1;
|
||||
guint trash_is_full : 1;
|
||||
guint accept_uri_drops : 1;
|
||||
};
|
||||
|
||||
@ -201,8 +204,6 @@ enum {
|
||||
#define ICON_NAME_FILESYSTEM "drive-harddisk-symbolic"
|
||||
#define ICON_NAME_EJECT "media-eject-symbolic"
|
||||
#define ICON_NAME_NETWORK "network-workgroup-symbolic"
|
||||
#define ICON_NAME_TRASH "user-trash-symbolic"
|
||||
#define ICON_NAME_TRASH_FULL "user-trash-full-symbolic"
|
||||
|
||||
#define ICON_NAME_FOLDER_DESKTOP "user-desktop"
|
||||
#define ICON_NAME_FOLDER_DOCUMENTS "folder-documents-symbolic"
|
||||
@ -796,16 +797,15 @@ update_places (GtkPlacesSidebar *sidebar)
|
||||
/* XDG directories */
|
||||
add_special_dirs (sidebar);
|
||||
|
||||
if (sidebar->show_trash) {
|
||||
mount_uri = "trash:///"; /* No need to strdup */
|
||||
icon = g_themed_icon_new (sidebar->trash_is_full ? ICON_NAME_TRASH_FULL : ICON_NAME_TRASH);
|
||||
add_place (sidebar, PLACES_BUILT_IN,
|
||||
SECTION_COMPUTER,
|
||||
_("Trash"), icon, mount_uri,
|
||||
NULL, NULL, NULL, 0,
|
||||
_("Open the trash"));
|
||||
g_object_unref (icon);
|
||||
}
|
||||
/* Trash */
|
||||
mount_uri = "trash:///"; /* No need to strdup */
|
||||
icon = _gtk_trash_monitor_get_icon (sidebar->trash_monitor);
|
||||
add_place (sidebar, PLACES_BUILT_IN,
|
||||
SECTION_COMPUTER,
|
||||
_("Trash"), icon, mount_uri,
|
||||
NULL, NULL, NULL, 0,
|
||||
_("Open the trash"));
|
||||
g_object_unref (icon);
|
||||
|
||||
/* Application-side shortcuts */
|
||||
add_application_shortcuts (sidebar);
|
||||
@ -3302,6 +3302,13 @@ tree_view_set_activate_on_single_click (GtkTreeView *tree_view)
|
||||
NULL);
|
||||
}
|
||||
|
||||
static void
|
||||
trash_monitor_trash_state_changed_cb (GtkTrashMonitor *monitor,
|
||||
GtkPlacesSidebar *sidebar)
|
||||
{
|
||||
update_places (sidebar);
|
||||
}
|
||||
|
||||
|
||||
static void
|
||||
gtk_places_sidebar_init (GtkPlacesSidebar *sidebar)
|
||||
@ -3318,6 +3325,10 @@ gtk_places_sidebar_init (GtkPlacesSidebar *sidebar)
|
||||
|
||||
sidebar->bookmarks_manager = _gtk_bookmarks_manager_new (bookmarks_changed_cb, sidebar);
|
||||
|
||||
sidebar->trash_monitor = _gtk_trash_monitor_get ();
|
||||
sidebar->trash_monitor_changed_id = g_signal_connect (sidebar->trash_monitor, "trash-state-changed",
|
||||
G_CALLBACK (trash_monitor_trash_state_changed_cb), sidebar);
|
||||
|
||||
sidebar->shortcuts = NULL;
|
||||
|
||||
gtk_scrolled_window_set_policy (GTK_SCROLLED_WINDOW (sidebar),
|
||||
@ -3524,6 +3535,12 @@ gtk_places_sidebar_dispose (GObject *object)
|
||||
sidebar->popup_menu = NULL;
|
||||
}
|
||||
|
||||
if (sidebar->trash_monitor) {
|
||||
g_signal_handler_disconnect (sidebar->trash_monitor, sidebar->trash_monitor_changed_id);
|
||||
sidebar->trash_monitor_changed_id = 0;
|
||||
g_clear_object (&sidebar->trash_monitor);
|
||||
}
|
||||
|
||||
g_clear_object (&sidebar->store);
|
||||
|
||||
g_slist_free_full (sidebar->shortcuts, g_object_unref);
|
||||
@ -3856,24 +3873,6 @@ gtk_places_sidebar_set_show_desktop (GtkPlacesSidebar *sidebar, gboolean show_de
|
||||
update_places (sidebar);
|
||||
}
|
||||
|
||||
void
|
||||
gtk_places_sidebar_set_show_trash (GtkPlacesSidebar *sidebar, gboolean show_trash)
|
||||
{
|
||||
g_return_if_fail (GTK_IS_PLACES_SIDEBAR (sidebar));
|
||||
|
||||
sidebar->show_trash = !!show_trash;
|
||||
update_places (sidebar);
|
||||
}
|
||||
|
||||
void
|
||||
gtk_places_sidebar_set_trash_is_full (GtkPlacesSidebar *sidebar, gboolean is_full)
|
||||
{
|
||||
g_return_if_fail (GTK_IS_PLACES_SIDEBAR (sidebar));
|
||||
|
||||
sidebar->trash_is_full = !!is_full;
|
||||
update_places (sidebar);
|
||||
}
|
||||
|
||||
void
|
||||
gtk_places_sidebar_set_accept_uri_drops (GtkPlacesSidebar *sidebar, gboolean accept_uri_drops)
|
||||
{
|
||||
|
@ -61,9 +61,6 @@ GFile *gtk_places_sidebar_get_selected_location (GtkPlacesSidebar *sidebar);
|
||||
|
||||
void gtk_places_sidebar_set_show_desktop (GtkPlacesSidebar *sidebar, gboolean show_desktop);
|
||||
|
||||
void gtk_places_sidebar_set_show_trash (GtkPlacesSidebar *sidebar, gboolean show_trash);
|
||||
void gtk_places_sidebar_set_trash_is_full (GtkPlacesSidebar *sidebar, gboolean is_full);
|
||||
|
||||
void gtk_places_sidebar_set_accept_uri_drops (GtkPlacesSidebar *sidebar, gboolean accept_uri_drops);
|
||||
|
||||
void gtk_places_sidebar_add_shortcut (GtkPlacesSidebar *sidebar, GFile *location);
|
||||
|
Loading…
Reference in New Issue
Block a user