|
|
|
|
@@ -53,16 +53,29 @@ fiv_sidebar_dispose(GObject *gobject)
|
|
|
|
|
G_OBJECT_CLASS(fiv_sidebar_parent_class)->dispose(gobject);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
static void
|
|
|
|
|
fiv_sidebar_realize(GtkWidget *widget)
|
|
|
|
|
{
|
|
|
|
|
GTK_WIDGET_CLASS(fiv_sidebar_parent_class)->realize(widget);
|
|
|
|
|
|
|
|
|
|
// Fucking GTK+. With no bookmarks, the revealer takes up space anyway.
|
|
|
|
|
FivSidebar *self = FIV_SIDEBAR(widget);
|
|
|
|
|
gtk_places_sidebar_set_drop_targets_visible(self->places, TRUE, NULL);
|
|
|
|
|
gtk_places_sidebar_set_drop_targets_visible(self->places, FALSE, NULL);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
static void
|
|
|
|
|
fiv_sidebar_class_init(FivSidebarClass *klass)
|
|
|
|
|
{
|
|
|
|
|
GObjectClass *object_class = G_OBJECT_CLASS(klass);
|
|
|
|
|
object_class->dispose = fiv_sidebar_dispose;
|
|
|
|
|
|
|
|
|
|
GtkWidgetClass *widget_class = GTK_WIDGET_CLASS(klass);
|
|
|
|
|
widget_class->realize = fiv_sidebar_realize;
|
|
|
|
|
|
|
|
|
|
// You're giving me no choice, Adwaita.
|
|
|
|
|
// Your style is hardcoded to match against the class' CSS name.
|
|
|
|
|
// And I need replicate the internal widget structure.
|
|
|
|
|
GtkWidgetClass *widget_class = GTK_WIDGET_CLASS(klass);
|
|
|
|
|
gtk_widget_class_set_css_name(widget_class, "placessidebar");
|
|
|
|
|
|
|
|
|
|
// TODO(p): Consider a return value, and using it.
|
|
|
|
|
@@ -120,6 +133,20 @@ on_breadcrumb_drag_data_get(G_GNUC_UNUSED GtkWidget *widget,
|
|
|
|
|
g_free(*uris);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
static void
|
|
|
|
|
on_breadcrumb_drag_begin(G_GNUC_UNUSED GtkWidget *widget,
|
|
|
|
|
GdkDragContext *context, gpointer user_data)
|
|
|
|
|
{
|
|
|
|
|
gtk_places_sidebar_set_drop_targets_visible(user_data, TRUE, context);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
static void
|
|
|
|
|
on_breadcrumb_drag_end(G_GNUC_UNUSED GtkWidget *widget,
|
|
|
|
|
GdkDragContext *context, gpointer user_data)
|
|
|
|
|
{
|
|
|
|
|
gtk_places_sidebar_set_drop_targets_visible(user_data, FALSE, context);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
static GtkWidget *
|
|
|
|
|
create_row(FivSidebar *self, GFile *file, const char *icon_name)
|
|
|
|
|
{
|
|
|
|
|
@@ -178,6 +205,10 @@ create_row(FivSidebar *self, GFile *file, const char *icon_name)
|
|
|
|
|
G_CALLBACK(on_breadcrumb_release), row);
|
|
|
|
|
g_signal_connect(revealer, "drag-data-get",
|
|
|
|
|
G_CALLBACK(on_breadcrumb_drag_data_get), row);
|
|
|
|
|
g_signal_connect(revealer, "drag-begin",
|
|
|
|
|
G_CALLBACK(on_breadcrumb_drag_begin), self->places);
|
|
|
|
|
g_signal_connect(revealer, "drag-end",
|
|
|
|
|
G_CALLBACK(on_breadcrumb_drag_end), self->places);
|
|
|
|
|
|
|
|
|
|
gtk_container_add(GTK_CONTAINER(row), revealer);
|
|
|
|
|
gtk_widget_show_all(row);
|
|
|
|
|
|