/* AbstractTreeView.c generated by valac 0.56.19, the Vala compiler
 * generated from AbstractTreeView.vala, do not modify */

#include <gtk/gtk.h>
#include <glib-object.h>
#include <glib.h>
#include <gdk/gdk.h>
#include <float.h>
#include <math.h>
#include <gio/gio.h>
#include "pantheon-files-core.h"
#include <stdlib.h>
#include <string.h>
#include <pango/pango.h>
#include <cairo-gobject.h>

#if !defined(VALA_STRICT_C)
#if !defined(__clang__) && defined(__GNUC__) && (__GNUC__ >= 14)
#pragma GCC diagnostic warning "-Wincompatible-pointer-types"
#elif defined(__clang__) && (__clang_major__ >= 16)
#pragma clang diagnostic ignored "-Wincompatible-function-pointer-types"
#pragma clang diagnostic ignored "-Wincompatible-pointer-types"
#endif
#endif
#if !defined(VALA_EXTERN)
#if defined(_MSC_VER)
#define VALA_EXTERN __declspec(dllexport) extern
#elif __GNUC__ >= 4
#define VALA_EXTERN __attribute__((visibility("default"))) extern
#else
#define VALA_EXTERN extern
#endif
#endif

#define FILES_TYPE_ABSTRACT_DIRECTORY_VIEW (files_abstract_directory_view_get_type ())
#define FILES_ABSTRACT_DIRECTORY_VIEW(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), FILES_TYPE_ABSTRACT_DIRECTORY_VIEW, FilesAbstractDirectoryView))
#define FILES_ABSTRACT_DIRECTORY_VIEW_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), FILES_TYPE_ABSTRACT_DIRECTORY_VIEW, FilesAbstractDirectoryViewClass))
#define FILES_IS_ABSTRACT_DIRECTORY_VIEW(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), FILES_TYPE_ABSTRACT_DIRECTORY_VIEW))
#define FILES_IS_ABSTRACT_DIRECTORY_VIEW_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), FILES_TYPE_ABSTRACT_DIRECTORY_VIEW))
#define FILES_ABSTRACT_DIRECTORY_VIEW_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), FILES_TYPE_ABSTRACT_DIRECTORY_VIEW, FilesAbstractDirectoryViewClass))

typedef struct _FilesAbstractDirectoryView FilesAbstractDirectoryView;
typedef struct _FilesAbstractDirectoryViewClass FilesAbstractDirectoryViewClass;
typedef struct _FilesAbstractDirectoryViewPrivate FilesAbstractDirectoryViewPrivate;

#define FILES_VIEW_TYPE_SLOT (files_view_slot_get_type ())
#define FILES_VIEW_SLOT(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), FILES_VIEW_TYPE_SLOT, FilesViewSlot))
#define FILES_VIEW_SLOT_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), FILES_VIEW_TYPE_SLOT, FilesViewSlotClass))
#define FILES_VIEW_IS_SLOT(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), FILES_VIEW_TYPE_SLOT))
#define FILES_VIEW_IS_SLOT_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), FILES_VIEW_TYPE_SLOT))
#define FILES_VIEW_SLOT_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), FILES_VIEW_TYPE_SLOT, FilesViewSlotClass))

typedef struct _FilesViewSlot FilesViewSlot;
typedef struct _FilesViewSlotClass FilesViewSlotClass;

#define FILES_TYPE_ABSTRACT_TREE_VIEW (files_abstract_tree_view_get_type ())
#define FILES_ABSTRACT_TREE_VIEW(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), FILES_TYPE_ABSTRACT_TREE_VIEW, FilesAbstractTreeView))
#define FILES_ABSTRACT_TREE_VIEW_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), FILES_TYPE_ABSTRACT_TREE_VIEW, FilesAbstractTreeViewClass))
#define FILES_IS_ABSTRACT_TREE_VIEW(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), FILES_TYPE_ABSTRACT_TREE_VIEW))
#define FILES_IS_ABSTRACT_TREE_VIEW_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), FILES_TYPE_ABSTRACT_TREE_VIEW))
#define FILES_ABSTRACT_TREE_VIEW_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), FILES_TYPE_ABSTRACT_TREE_VIEW, FilesAbstractTreeViewClass))

typedef struct _FilesAbstractTreeView FilesAbstractTreeView;
typedef struct _FilesAbstractTreeViewClass FilesAbstractTreeViewClass;
typedef struct _FilesAbstractTreeViewPrivate FilesAbstractTreeViewPrivate;

#define FILES_TYPE_TREE_VIEW (files_tree_view_get_type ())
#define FILES_TREE_VIEW(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), FILES_TYPE_TREE_VIEW, FilesTreeView))
#define FILES_TREE_VIEW_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), FILES_TYPE_TREE_VIEW, FilesTreeViewClass))
#define FILES_IS_TREE_VIEW(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), FILES_TYPE_TREE_VIEW))
#define FILES_IS_TREE_VIEW_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), FILES_TYPE_TREE_VIEW))
#define FILES_TREE_VIEW_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), FILES_TYPE_TREE_VIEW, FilesTreeViewClass))

typedef struct _FilesTreeView FilesTreeView;
typedef struct _FilesTreeViewClass FilesTreeViewClass;
enum  {
	FILES_ABSTRACT_TREE_VIEW_0_PROPERTY,
	FILES_ABSTRACT_TREE_VIEW_NUM_PROPERTIES
};
static GParamSpec* files_abstract_tree_view_properties[FILES_ABSTRACT_TREE_VIEW_NUM_PROPERTIES];
#define _g_object_unref0(var) ((var == NULL) ? NULL : (var = (g_object_unref (var), NULL)))
#define __vala_GtkTreePath_free0(var) ((var == NULL) ? NULL : (var = (_vala_GtkTreePath_free (var), NULL)))
typedef struct _Block36Data Block36Data;
typedef struct _Block37Data Block37Data;
typedef enum  {
	FILES_ABSTRACT_DIRECTORY_VIEW_CLICK_ZONE_EXPANDER,
	FILES_ABSTRACT_DIRECTORY_VIEW_CLICK_ZONE_HELPER,
	FILES_ABSTRACT_DIRECTORY_VIEW_CLICK_ZONE_ICON,
	FILES_ABSTRACT_DIRECTORY_VIEW_CLICK_ZONE_NAME,
	FILES_ABSTRACT_DIRECTORY_VIEW_CLICK_ZONE_BLANK_PATH,
	FILES_ABSTRACT_DIRECTORY_VIEW_CLICK_ZONE_BLANK_NO_PATH,
	FILES_ABSTRACT_DIRECTORY_VIEW_CLICK_ZONE_INVALID
} FilesAbstractDirectoryViewClickZone;

#define FILES_ABSTRACT_DIRECTORY_VIEW_TYPE_CLICK_ZONE (files_abstract_directory_view_click_zone_get_type ())
#define _g_free0(var) (var = (g_free (var), NULL))
typedef struct _FilesTreeViewPrivate FilesTreeViewPrivate;
enum  {
	FILES_TREE_VIEW_0_PROPERTY,
	FILES_TREE_VIEW_ZOOM_LEVEL_PROPERTY,
	FILES_TREE_VIEW_NUM_PROPERTIES
};
static GParamSpec* files_tree_view_properties[FILES_TREE_VIEW_NUM_PROPERTIES];

struct _FilesAbstractDirectoryView {
	GtkBin parent_instance;
	FilesAbstractDirectoryViewPrivate * priv;
	FilesZoomLevel minimum_zoom;
	FilesZoomLevel maximum_zoom;
	GList* source_drag_file_list;
	GdkAtom current_target_type;
	gboolean dnd_disabled;
	FilesTextRenderer* name_renderer;
	gchar* original_name;
	gchar* proposed_name;
	gboolean right_margin_unselects_all;
	gboolean on_directory;
	gboolean one_or_less;
	gboolean should_activate;
	gboolean should_deselect;
	gboolean should_thumbnail;
	gboolean should_select;
	GtkTreePath* click_path;
	guint click_zone;
	guint previous_click_zone;
	GList* selected_files;
	gboolean is_writable;
	gboolean is_loading;
	gboolean helpers_shown;
	GtkScrolledWindow* scrolled_window;
	FilesListModel* model;
	FilesIconRenderer* icon_renderer;
	FilesViewSlot* slot;
	GtkRecentManager* recent;
	GtkEventControllerKey* key_controller;
	GtkGestureMultiPress* button_controller;
	GtkEventControllerScroll* scroll_controller;
	GtkEventControllerMotion* motion_controller;
};

struct _FilesAbstractDirectoryViewClass {
	GtkBinClass parent_class;
	void (*on_row_deleted) (FilesAbstractDirectoryView* self, GtkTreePath* path);
	gboolean (*on_view_key_press_event) (FilesAbstractDirectoryView* self, guint original_keyval, guint keycode, GdkModifierType state);
	void (*on_scroll_event) (FilesAbstractDirectoryView* self, gdouble dx, gdouble dy);
	gboolean (*handle_primary_button_click) (FilesAbstractDirectoryView* self, guint n_press, GdkModifierType mods, GtkTreePath* path);
	void (*on_view_button_press_event) (FilesAbstractDirectoryView* self, gint n_press, gdouble x, gdouble y);
	void (*on_view_button_release_event) (FilesAbstractDirectoryView* self, gint n_press, gdouble x, gdouble y);
	void (*change_zoom_level) (FilesAbstractDirectoryView* self);
	gboolean (*expand_collapse) (FilesAbstractDirectoryView* self, GtkTreePath* path);
	gboolean (*handle_default_button_click) (FilesAbstractDirectoryView* self);
	gboolean (*get_next_visible_iter) (FilesAbstractDirectoryView* self, GtkTreeIter* iter, gboolean recurse);
	void (*cancel) (FilesAbstractDirectoryView* self);
	void (*highlight_path) (FilesAbstractDirectoryView* self, GtkTreePath* path);
	GtkTreePath* (*up) (FilesAbstractDirectoryView* self, GtkTreePath* path);
	GtkTreePath* (*down) (FilesAbstractDirectoryView* self, GtkTreePath* path);
	GSettings* (*get_view_settings) (FilesAbstractDirectoryView* self);
	void (*set_up_zoom_level) (FilesAbstractDirectoryView* self);
	gboolean (*view_has_focus) (FilesAbstractDirectoryView* self);
	void (*scroll_to_cell) (FilesAbstractDirectoryView* self, GtkTreePath* path, gboolean scroll_to_top);
	GList* (*get_selected_paths) (FilesAbstractDirectoryView* self);
	GtkTreePath* (*get_path_at_pos) (FilesAbstractDirectoryView* self, gint x, gint win);
	GtkTreePath* (*get_path_at_cursor) (FilesAbstractDirectoryView* self);
	void (*tree_select_all) (FilesAbstractDirectoryView* self);
	void (*tree_unselect_all) (FilesAbstractDirectoryView* self);
	void (*tree_unselect_others) (FilesAbstractDirectoryView* self);
	void (*select_path) (FilesAbstractDirectoryView* self, GtkTreePath* path, gboolean cursor_follows);
	void (*unselect_path) (FilesAbstractDirectoryView* self, GtkTreePath* path);
	gboolean (*path_is_selected) (FilesAbstractDirectoryView* self, GtkTreePath* path);
	gboolean (*get_visible_range) (FilesAbstractDirectoryView* self, GtkTreePath** start_path, GtkTreePath** end_path);
	void (*set_cursor) (FilesAbstractDirectoryView* self, GtkTreePath* path, gboolean start_editing, gboolean select, gboolean scroll_to_top);
	gboolean (*move_cursor) (FilesAbstractDirectoryView* self, guint keyval, gboolean only_shift_pressed, gboolean control_pressed);
	gboolean (*will_handle_button_press) (FilesAbstractDirectoryView* self, gboolean no_mods, gboolean only_control_pressed, gboolean only_shift_pressed);
	gboolean (*handle_multi_select) (FilesAbstractDirectoryView* self, GtkTreePath* path);
	GtkWidget* (*create_view) (FilesAbstractDirectoryView* self);
	guint (*get_event_position_info) (FilesAbstractDirectoryView* self, gdouble x, gdouble y, GtkTreePath** path, gboolean rubberband);
	void (*scroll_to_path) (FilesAbstractDirectoryView* self, GtkTreePath* path, gboolean scroll_to_top);
	void (*set_cursor_on_cell) (FilesAbstractDirectoryView* self, GtkTreePath* path, GtkCellRenderer* renderer, gboolean start_editing, gboolean scroll_to_top);
	void (*freeze_tree) (FilesAbstractDirectoryView* self);
	void (*thaw_tree) (FilesAbstractDirectoryView* self);
	void (*freeze_child_notify) (FilesAbstractDirectoryView* self);
	void (*thaw_child_notify) (FilesAbstractDirectoryView* self);
	void (*connect_tree_signals) (FilesAbstractDirectoryView* self);
	void (*disconnect_tree_signals) (FilesAbstractDirectoryView* self);
};

struct _FilesAbstractTreeView {
	FilesAbstractDirectoryView parent_instance;
	FilesAbstractTreeViewPrivate * priv;
	FilesTreeView* tree;
	GtkTreeViewColumn* name_column;
};

struct _FilesAbstractTreeViewClass {
	FilesAbstractDirectoryViewClass parent_class;
	void (*set_up_icon_renderer) (FilesAbstractTreeView* self);
};

struct _Block36Data {
	int _ref_count_;
	FilesAbstractTreeView* self;
	GtkTreeSelection* selection;
};

struct _Block37Data {
	int _ref_count_;
	Block36Data * _data36_;
	GList* selected_paths;
};

struct _FilesTreeView {
	GtkTreeView parent_instance;
	FilesTreeViewPrivate * priv;
};

struct _FilesTreeViewClass {
	GtkTreeViewClass parent_class;
};

struct _FilesTreeViewPrivate {
	FilesZoomLevel _zoom_level;
};

static gpointer files_abstract_tree_view_parent_class = NULL;
static gint FilesTreeView_private_offset;
static gpointer files_tree_view_parent_class = NULL;

VALA_EXTERN GType files_abstract_directory_view_get_type (void) G_GNUC_CONST ;
G_DEFINE_AUTOPTR_CLEANUP_FUNC (FilesAbstractDirectoryView, g_object_unref)
VALA_EXTERN GType files_view_slot_get_type (void) G_GNUC_CONST ;
G_DEFINE_AUTOPTR_CLEANUP_FUNC (FilesViewSlot, g_object_unref)
VALA_EXTERN GType files_abstract_tree_view_get_type (void) G_GNUC_CONST ;
G_DEFINE_AUTOPTR_CLEANUP_FUNC (FilesAbstractTreeView, g_object_unref)
VALA_EXTERN GType files_tree_view_get_type (void) G_GNUC_CONST ;
G_DEFINE_AUTOPTR_CLEANUP_FUNC (FilesTreeView, g_object_unref)
VALA_EXTERN void files_abstract_tree_view_set_up_icon_renderer (FilesAbstractTreeView* self);
VALA_EXTERN void files_abstract_directory_view_connect_tree_signals (FilesAbstractDirectoryView* self);
VALA_EXTERN void files_abstract_directory_view_disconnect_tree_signals (FilesAbstractDirectoryView* self);
VALA_EXTERN GtkWidget* files_abstract_directory_view_create_view (FilesAbstractDirectoryView* self);
VALA_EXTERN void files_abstract_directory_view_change_zoom_level (FilesAbstractDirectoryView* self);
VALA_EXTERN GList* files_abstract_directory_view_get_selected_paths (FilesAbstractDirectoryView* self);
VALA_EXTERN void files_abstract_directory_view_highlight_path (FilesAbstractDirectoryView* self,
                                                   GtkTreePath* path);
VALA_EXTERN GtkTreePath* files_abstract_directory_view_get_path_at_pos (FilesAbstractDirectoryView* self,
                                                            gint x,
                                                            gint win);
VALA_EXTERN void files_abstract_directory_view_tree_select_all (FilesAbstractDirectoryView* self);
VALA_EXTERN void files_abstract_directory_view_tree_unselect_all (FilesAbstractDirectoryView* self);
VALA_EXTERN void files_abstract_directory_view_select_path (FilesAbstractDirectoryView* self,
                                                GtkTreePath* path,
                                                gboolean cursor_follows);
VALA_EXTERN void files_abstract_directory_view_unselect_path (FilesAbstractDirectoryView* self,
                                                  GtkTreePath* path);
VALA_EXTERN gboolean files_abstract_directory_view_path_is_selected (FilesAbstractDirectoryView* self,
                                                         GtkTreePath* path);
VALA_EXTERN gboolean files_abstract_directory_view_get_visible_range (FilesAbstractDirectoryView* self,
                                                          GtkTreePath** start_path,
                                                          GtkTreePath** end_path);
VALA_EXTERN guint files_abstract_directory_view_get_event_position_info (FilesAbstractDirectoryView* self,
                                                             gdouble x,
                                                             gdouble y,
                                                             GtkTreePath** path,
                                                             gboolean rubberband);
VALA_EXTERN void files_abstract_directory_view_scroll_to_path (FilesAbstractDirectoryView* self,
                                                   GtkTreePath* path,
                                                   gboolean scroll_to_top);
VALA_EXTERN void files_abstract_directory_view_set_cursor_on_cell (FilesAbstractDirectoryView* self,
                                                       GtkTreePath* path,
                                                       GtkCellRenderer* renderer,
                                                       gboolean start_editing,
                                                       gboolean scroll_to_top);
VALA_EXTERN void files_abstract_directory_view_set_cursor (FilesAbstractDirectoryView* self,
                                               GtkTreePath* path,
                                               gboolean start_editing,
                                               gboolean select,
                                               gboolean scroll_to_top);
VALA_EXTERN GtkTreePath* files_abstract_directory_view_get_path_at_cursor (FilesAbstractDirectoryView* self);
VALA_EXTERN void files_abstract_directory_view_freeze_tree (FilesAbstractDirectoryView* self);
VALA_EXTERN void files_abstract_directory_view_thaw_tree (FilesAbstractDirectoryView* self);
VALA_EXTERN void files_abstract_directory_view_freeze_child_notify (FilesAbstractDirectoryView* self);
VALA_EXTERN void files_abstract_directory_view_thaw_child_notify (FilesAbstractDirectoryView* self);
VALA_EXTERN FilesAbstractTreeView* files_abstract_tree_view_construct (GType object_type,
                                                           FilesViewSlot* _slot);
VALA_EXTERN FilesAbstractDirectoryView* files_abstract_directory_view_construct (GType object_type,
                                                                     FilesViewSlot* _slot);
static void files_abstract_tree_view_real_set_up_icon_renderer (FilesAbstractTreeView* self);
static void files_abstract_tree_view_real_connect_tree_signals (FilesAbstractDirectoryView* base);
VALA_EXTERN void files_abstract_directory_view_on_view_selection_changed (FilesAbstractDirectoryView* self);
static void _files_abstract_directory_view_on_view_selection_changed_gtk_tree_selection_changed (GtkTreeSelection* _sender,
                                                                                          gpointer self);
static void files_abstract_tree_view_real_disconnect_tree_signals (FilesAbstractDirectoryView* base);
static GtkWidget* files_abstract_tree_view_real_create_view (FilesAbstractDirectoryView* base);
VALA_EXTERN FilesTreeView* files_tree_view_new (void);
VALA_EXTERN FilesTreeView* files_tree_view_construct (GType object_type);
VALA_EXTERN void files_abstract_directory_view_set_up_name_renderer (FilesAbstractDirectoryView* self);
static void __lambda77_ (FilesAbstractTreeView* self,
                  GtkWidget* w);
VALA_EXTERN FilesZoomLevel files_abstract_directory_view_get_zoom_level (FilesAbstractDirectoryView* self);
VALA_EXTERN void files_tree_view_set_zoom_level (FilesTreeView* self,
                                     FilesZoomLevel value);
static void ___lambda77__gtk_widget_realize (GtkWidget* _sender,
                                      gpointer self);
static void files_abstract_tree_view_real_change_zoom_level (FilesAbstractDirectoryView* base);
static GList* files_abstract_tree_view_real_get_selected_paths (FilesAbstractDirectoryView* base);
static void files_abstract_tree_view_real_highlight_path (FilesAbstractDirectoryView* base,
                                                   GtkTreePath* path);
static GtkTreePath* files_abstract_tree_view_real_get_path_at_pos (FilesAbstractDirectoryView* base,
                                                            gint x,
                                                            gint y);
static void _vala_GtkTreePath_free (GtkTreePath* self);
static void files_abstract_tree_view_real_tree_select_all (FilesAbstractDirectoryView* base);
static void files_abstract_tree_view_real_tree_unselect_all (FilesAbstractDirectoryView* base);
static void files_abstract_tree_view_real_select_path (FilesAbstractDirectoryView* base,
                                                GtkTreePath* path,
                                                gboolean cursor_follows);
static Block36Data* block36_data_ref (Block36Data* _data36_);
static void block36_data_unref (void * _userdata_);
static Block37Data* block37_data_ref (Block37Data* _data37_);
static void __vala_GtkTreePath_free0_ (gpointer var);
static inline void _g_list_free___vala_GtkTreePath_free0_ (GList* self);
static void block37_data_unref (void * _userdata_);
static void ____lambda78_ (Block37Data* _data37_,
                    GtkTreeModel* m,
                    GtkTreePath* p,
                    GtkTreeIter* i);
static GtkTreePath* _vala_GtkTreePath_copy (GtkTreePath* self);
static void _____lambda78__gtk_tree_selection_foreach_func (GtkTreeModel* model,
                                                     GtkTreePath* path,
                                                     GtkTreeIter* iter,
                                                     gpointer self);
static void ____lambda79_ (Block37Data* _data37_,
                    GtkTreePath* p);
static void _____lambda79__gfunc (gconstpointer data,
                           gpointer self);
static void files_abstract_tree_view_real_unselect_path (FilesAbstractDirectoryView* base,
                                                  GtkTreePath* path);
static gboolean files_abstract_tree_view_real_path_is_selected (FilesAbstractDirectoryView* base,
                                                         GtkTreePath* path);
static gboolean files_abstract_tree_view_real_get_visible_range (FilesAbstractDirectoryView* base,
                                                          GtkTreePath** start_path,
                                                          GtkTreePath** end_path);
static guint files_abstract_tree_view_real_get_event_position_info (FilesAbstractDirectoryView* base,
                                                             gdouble wx,
                                                             gdouble wy,
                                                             GtkTreePath** path,
                                                             gboolean rubberband);
VALA_EXTERN GType files_abstract_directory_view_click_zone_get_type (void) G_GNUC_CONST ;
VALA_EXTERN gint files_abstract_directory_view_get_icon_size (FilesAbstractDirectoryView* self);
VALA_EXTERN gboolean files_abstract_directory_view_is_on_icon (FilesAbstractDirectoryView* self,
                                                   gint x,
                                                   gint y,
                                                   gboolean* on_helper);
static void files_abstract_tree_view_real_scroll_to_path (FilesAbstractDirectoryView* base,
                                                   GtkTreePath* path,
                                                   gboolean scroll_to_top);
static void files_abstract_tree_view_real_set_cursor_on_cell (FilesAbstractDirectoryView* base,
                                                       GtkTreePath* path,
                                                       GtkCellRenderer* renderer,
                                                       gboolean start_editing,
                                                       gboolean scroll_to_top);
VALA_EXTERN void files_abstract_directory_view_scroll_to_cell (FilesAbstractDirectoryView* self,
                                                   GtkTreePath* path,
                                                   gboolean scroll_to_top);
static void files_abstract_tree_view_real_set_cursor (FilesAbstractDirectoryView* base,
                                               GtkTreePath* path,
                                               gboolean start_editing,
                                               gboolean select,
                                               gboolean scroll_to_top);
static GtkTreePath* files_abstract_tree_view_real_get_path_at_cursor (FilesAbstractDirectoryView* base);
static void files_abstract_tree_view_real_freeze_tree (FilesAbstractDirectoryView* base);
VALA_EXTERN gboolean files_abstract_directory_view_get_tree_frozen (FilesAbstractDirectoryView* self);
VALA_EXTERN void files_abstract_directory_view_set_tree_frozen (FilesAbstractDirectoryView* self,
                                                    gboolean value);
static void files_abstract_tree_view_real_thaw_tree (FilesAbstractDirectoryView* base);
static void files_abstract_tree_view_real_freeze_child_notify (FilesAbstractDirectoryView* base);
static void files_abstract_tree_view_real_thaw_child_notify (FilesAbstractDirectoryView* base);
static void files_abstract_tree_view_finalize (GObject * obj);
static GType files_abstract_tree_view_get_type_once (void);
VALA_EXTERN FilesZoomLevel files_tree_view_get_zoom_level (FilesTreeView* self);
static void files_tree_view_finalize (GObject * obj);
static GType files_tree_view_get_type_once (void);
static void _vala_files_tree_view_get_property (GObject * object,
                                         guint property_id,
                                         GValue * value,
                                         GParamSpec * pspec);
static void _vala_files_tree_view_set_property (GObject * object,
                                         guint property_id,
                                         const GValue * value,
                                         GParamSpec * pspec);

FilesAbstractTreeView*
files_abstract_tree_view_construct (GType object_type,
                                    FilesViewSlot* _slot)
{
	FilesAbstractTreeView * self = NULL;
	g_return_val_if_fail (_slot != NULL, NULL);
	self = (FilesAbstractTreeView*) files_abstract_directory_view_construct (object_type, _slot);
	return self;
}

static void
files_abstract_tree_view_real_set_up_icon_renderer (FilesAbstractTreeView* self)
{
	g_critical ("Type `%s' does not implement abstract method `files_abstract_tree_view_set_up_icon_renderer'", g_type_name (G_TYPE_FROM_INSTANCE (self)));
	return;
}

void
files_abstract_tree_view_set_up_icon_renderer (FilesAbstractTreeView* self)
{
	FilesAbstractTreeViewClass* _klass_;
	g_return_if_fail (self != NULL);
	_klass_ = FILES_ABSTRACT_TREE_VIEW_GET_CLASS (self);
	if (_klass_->set_up_icon_renderer) {
		_klass_->set_up_icon_renderer (self);
	}
}

static void
_files_abstract_directory_view_on_view_selection_changed_gtk_tree_selection_changed (GtkTreeSelection* _sender,
                                                                                     gpointer self)
{
	files_abstract_directory_view_on_view_selection_changed ((FilesAbstractDirectoryView*) self);
}

static void
files_abstract_tree_view_real_connect_tree_signals (FilesAbstractDirectoryView* base)
{
	FilesAbstractTreeView * self;
	FilesTreeView* _tmp0_;
	GtkTreeSelection* _tmp1_;
	self = (FilesAbstractTreeView*) base;
	_tmp0_ = self->tree;
	_tmp1_ = gtk_tree_view_get_selection ((GtkTreeView*) _tmp0_);
	g_signal_connect_object (_tmp1_, "changed", (GCallback) _files_abstract_directory_view_on_view_selection_changed_gtk_tree_selection_changed, (FilesAbstractDirectoryView*) self, 0);
}

static void
files_abstract_tree_view_real_disconnect_tree_signals (FilesAbstractDirectoryView* base)
{
	FilesAbstractTreeView * self;
	FilesTreeView* _tmp0_;
	GtkTreeSelection* _tmp1_;
	guint _tmp2_;
	self = (FilesAbstractTreeView*) base;
	_tmp0_ = self->tree;
	_tmp1_ = gtk_tree_view_get_selection ((GtkTreeView*) _tmp0_);
	g_signal_parse_name ("changed", gtk_tree_selection_get_type (), &_tmp2_, NULL, FALSE);
	g_signal_handlers_disconnect_matched (_tmp1_, G_SIGNAL_MATCH_ID | G_SIGNAL_MATCH_FUNC | G_SIGNAL_MATCH_DATA, _tmp2_, 0, NULL, (GCallback) _files_abstract_directory_view_on_view_selection_changed_gtk_tree_selection_changed, (FilesAbstractDirectoryView*) self);
}

static gpointer
_g_object_ref0 (gpointer self)
{
	return self ? g_object_ref (self) : NULL;
}

static void
__lambda77_ (FilesAbstractTreeView* self,
             GtkWidget* w)
{
	FilesTreeView* _tmp0_;
	FilesTreeView* _tmp1_;
	FilesTreeView* _tmp2_;
	FilesZoomLevel _tmp3_;
	FilesZoomLevel _tmp4_;
	g_return_if_fail (w != NULL);
	_tmp0_ = self->tree;
	gtk_widget_grab_focus ((GtkWidget*) _tmp0_);
	_tmp1_ = self->tree;
	gtk_tree_view_columns_autosize ((GtkTreeView*) _tmp1_);
	_tmp2_ = self->tree;
	_tmp3_ = files_abstract_directory_view_get_zoom_level ((FilesAbstractDirectoryView*) self);
	_tmp4_ = _tmp3_;
	files_tree_view_set_zoom_level (_tmp2_, _tmp4_);
}

static void
___lambda77__gtk_widget_realize (GtkWidget* _sender,
                                 gpointer self)
{
	__lambda77_ ((FilesAbstractTreeView*) self, _sender);
}

static GtkWidget*
files_abstract_tree_view_real_create_view (FilesAbstractDirectoryView* base)
{
	FilesAbstractTreeView * self;
	FilesListModel* _tmp0_;
	GtkTreeModel* _tmp1_;
	FilesTreeView* _tmp2_ = NULL;
	FilesTreeView* _tmp3_;
	GtkTreeSelection* _tmp4_;
	GtkTreeViewColumn* _tmp5_ = NULL;
	FilesTextRenderer* _tmp6_ = NULL;
	FilesEmblemRenderer* emblem_renderer = NULL;
	FilesEmblemRenderer* _tmp7_;
	GtkTreeViewColumn* _tmp8_;
	FilesIconRenderer* _tmp9_;
	GtkTreeViewColumn* _tmp10_;
	FilesIconRenderer* _tmp11_;
	GtkTreeViewColumn* _tmp12_;
	FilesTextRenderer* _tmp13_;
	GtkTreeViewColumn* _tmp14_;
	FilesTextRenderer* _tmp15_;
	GtkTreeViewColumn* _tmp16_;
	GtkTreeViewColumn* _tmp17_;
	FilesTreeView* _tmp18_;
	GtkTreeViewColumn* _tmp19_;
	FilesTreeView* _tmp20_;
	FilesTreeView* _tmp21_;
	GtkWidget* _tmp22_;
	GtkWidget* result;
	self = (FilesAbstractTreeView*) base;
	_tmp0_ = ((FilesAbstractDirectoryView*) self)->model;
	_tmp1_ = _g_object_ref0 ((GtkTreeModel*) _tmp0_);
	_tmp2_ = files_tree_view_new ();
	gtk_tree_view_set_model ((GtkTreeView*) _tmp2_, _tmp1_);
	_g_object_unref0 (_tmp1_);
	gtk_tree_view_set_headers_visible ((GtkTreeView*) _tmp2_, FALSE);
	gtk_tree_view_set_rubber_banding ((GtkTreeView*) _tmp2_, TRUE);
	g_object_ref_sink (_tmp2_);
	_g_object_unref0 (self->tree);
	self->tree = _tmp2_;
	_tmp3_ = self->tree;
	_tmp4_ = gtk_tree_view_get_selection ((GtkTreeView*) _tmp3_);
	gtk_tree_selection_set_mode (_tmp4_, GTK_SELECTION_MULTIPLE);
	_tmp5_ = gtk_tree_view_column_new ();
	gtk_tree_view_column_set_sort_column_id (_tmp5_, (gint) FILES_LIST_MODEL_COLUMN_ID_FILENAME);
	gtk_tree_view_column_set_expand (_tmp5_, TRUE);
	gtk_tree_view_column_set_resizable (_tmp5_, TRUE);
	g_object_ref_sink (_tmp5_);
	_g_object_unref0 (self->name_column);
	self->name_column = _tmp5_;
	_tmp6_ = files_text_renderer_new (FILES_VIEW_MODE_LIST);
	g_object_set ((GtkCellRendererText*) _tmp6_, "wrap-width", -1, NULL);
	files_text_renderer_set_zoom_level (_tmp6_, FILES_ZOOM_LEVEL_NORMAL);
	g_object_set ((GtkCellRendererText*) _tmp6_, "ellipsize-set", TRUE, NULL);
	g_object_set ((GtkCellRendererText*) _tmp6_, "ellipsize", PANGO_ELLIPSIZE_END, NULL);
	g_object_set ((GtkCellRenderer*) _tmp6_, "xalign", 0.0f, NULL);
	g_object_set ((GtkCellRenderer*) _tmp6_, "yalign", 0.5f, NULL);
	g_object_ref_sink (_tmp6_);
	_g_object_unref0 (((FilesAbstractDirectoryView*) self)->name_renderer);
	((FilesAbstractDirectoryView*) self)->name_renderer = _tmp6_;
	files_abstract_directory_view_set_up_name_renderer ((FilesAbstractDirectoryView*) self);
	files_abstract_tree_view_set_up_icon_renderer (self);
	_tmp7_ = files_emblem_renderer_new ();
	g_object_ref_sink (_tmp7_);
	emblem_renderer = _tmp7_;
	g_object_set ((GtkCellRenderer*) emblem_renderer, "yalign", 0.5f, NULL);
	_tmp8_ = self->name_column;
	_tmp9_ = ((FilesAbstractDirectoryView*) self)->icon_renderer;
	gtk_cell_layout_pack_start ((GtkCellLayout*) _tmp8_, (GtkCellRenderer*) _tmp9_, FALSE);
	_tmp10_ = self->name_column;
	_tmp11_ = ((FilesAbstractDirectoryView*) self)->icon_renderer;
	gtk_tree_view_column_set_attributes (_tmp10_, (GtkCellRenderer*) _tmp11_, "file", FILES_LIST_MODEL_COLUMN_ID_FILE_COLUMN, NULL);
	_tmp12_ = self->name_column;
	_tmp13_ = ((FilesAbstractDirectoryView*) self)->name_renderer;
	gtk_cell_layout_pack_start ((GtkCellLayout*) _tmp12_, (GtkCellRenderer*) _tmp13_, TRUE);
	_tmp14_ = self->name_column;
	_tmp15_ = ((FilesAbstractDirectoryView*) self)->name_renderer;
	gtk_tree_view_column_set_attributes (_tmp14_, (GtkCellRenderer*) _tmp15_, "text", FILES_LIST_MODEL_COLUMN_ID_FILENAME, "file", FILES_LIST_MODEL_COLUMN_ID_FILE_COLUMN, "background", FILES_LIST_MODEL_COLUMN_ID_COLOR, NULL);
	_tmp16_ = self->name_column;
	gtk_cell_layout_pack_start ((GtkCellLayout*) _tmp16_, (GtkCellRenderer*) emblem_renderer, FALSE);
	_tmp17_ = self->name_column;
	gtk_tree_view_column_set_attributes (_tmp17_, (GtkCellRenderer*) emblem_renderer, "file", FILES_LIST_MODEL_COLUMN_ID_FILE_COLUMN, NULL);
	_tmp18_ = self->tree;
	_tmp19_ = self->name_column;
	gtk_tree_view_append_column ((GtkTreeView*) _tmp18_, _tmp19_);
	files_abstract_directory_view_connect_tree_signals ((FilesAbstractDirectoryView*) self);
	_tmp20_ = self->tree;
	g_signal_connect_object ((GtkWidget*) _tmp20_, "realize", (GCallback) ___lambda77__gtk_widget_realize, self, 0);
	_tmp21_ = self->tree;
	_tmp22_ = _g_object_ref0 (G_TYPE_CHECK_INSTANCE_TYPE (_tmp21_, gtk_widget_get_type ()) ? ((GtkWidget*) _tmp21_) : NULL);
	result = _tmp22_;
	_g_object_unref0 (emblem_renderer);
	return result;
}

static void
files_abstract_tree_view_real_change_zoom_level (FilesAbstractDirectoryView* base)
{
	FilesAbstractTreeView * self;
	FilesTreeView* _tmp0_;
	self = (FilesAbstractTreeView*) base;
	_tmp0_ = self->tree;
	if (_tmp0_ != NULL) {
		FilesTreeView* _tmp1_;
		FilesTreeView* _tmp2_;
		FilesZoomLevel _tmp3_;
		FilesZoomLevel _tmp4_;
		GValue _tmp5_ = {0};
		FILES_ABSTRACT_DIRECTORY_VIEW_CLASS (files_abstract_tree_view_parent_class)->change_zoom_level (G_TYPE_CHECK_INSTANCE_CAST (self, FILES_TYPE_ABSTRACT_DIRECTORY_VIEW, FilesAbstractDirectoryView));
		_tmp1_ = self->tree;
		gtk_tree_view_columns_autosize ((GtkTreeView*) _tmp1_);
		_tmp2_ = self->tree;
		_tmp3_ = files_abstract_directory_view_get_zoom_level ((FilesAbstractDirectoryView*) self);
		_tmp4_ = _tmp3_;
		g_value_init (&_tmp5_, FILES_TYPE_ZOOM_LEVEL);
		g_value_set_enum (&_tmp5_, _tmp4_);
		g_object_set_property ((GObject*) _tmp2_, "zoom-level", &_tmp5_);
		G_IS_VALUE (&_tmp5_) ? (g_value_unset (&_tmp5_), NULL) : NULL;
	}
}

static GList*
files_abstract_tree_view_real_get_selected_paths (FilesAbstractDirectoryView* base)
{
	FilesAbstractTreeView * self;
	FilesTreeView* _tmp0_;
	GtkTreeSelection* _tmp1_;
	GList* _tmp2_;
	GList* result;
	self = (FilesAbstractTreeView*) base;
	_tmp0_ = self->tree;
	_tmp1_ = gtk_tree_view_get_selection ((GtkTreeView*) _tmp0_);
	_tmp2_ = gtk_tree_selection_get_selected_rows (_tmp1_, NULL);
	result = _tmp2_;
	return result;
}

static void
files_abstract_tree_view_real_highlight_path (FilesAbstractDirectoryView* base,
                                              GtkTreePath* path)
{
	FilesAbstractTreeView * self;
	FilesTreeView* _tmp0_;
	self = (FilesAbstractTreeView*) base;
	_tmp0_ = self->tree;
	gtk_tree_view_set_drag_dest_row ((GtkTreeView*) _tmp0_, path, GTK_TREE_VIEW_DROP_INTO_OR_AFTER);
}

static void
_vala_GtkTreePath_free (GtkTreePath* self)
{
	g_boxed_free (gtk_tree_path_get_type (), self);
}

static GtkTreePath*
files_abstract_tree_view_real_get_path_at_pos (FilesAbstractDirectoryView* base,
                                               gint x,
                                               gint y)
{
	FilesAbstractTreeView * self;
	GtkTreePath* path = NULL;
	gboolean _tmp0_ = FALSE;
	gboolean _tmp1_ = FALSE;
	GtkTreePath* result;
	self = (FilesAbstractTreeView*) base;
	path = NULL;
	if (x >= 0) {
		_tmp1_ = y >= 0;
	} else {
		_tmp1_ = FALSE;
	}
	if (_tmp1_) {
		FilesTreeView* _tmp2_;
		GtkTreePath* _tmp3_ = NULL;
		gboolean _tmp4_;
		_tmp2_ = self->tree;
		_tmp4_ = gtk_tree_view_get_dest_row_at_pos ((GtkTreeView*) _tmp2_, x, y, &_tmp3_, NULL);
		__vala_GtkTreePath_free0 (path);
		path = _tmp3_;
		_tmp0_ = _tmp4_;
	} else {
		_tmp0_ = FALSE;
	}
	if (_tmp0_) {
		result = path;
		return result;
	} else {
		result = NULL;
		__vala_GtkTreePath_free0 (path);
		return result;
	}
}

static void
files_abstract_tree_view_real_tree_select_all (FilesAbstractDirectoryView* base)
{
	FilesAbstractTreeView * self;
	FilesTreeView* _tmp0_;
	GtkTreeSelection* _tmp1_;
	self = (FilesAbstractTreeView*) base;
	_tmp0_ = self->tree;
	_tmp1_ = gtk_tree_view_get_selection ((GtkTreeView*) _tmp0_);
	gtk_tree_selection_select_all (_tmp1_);
}

static void
files_abstract_tree_view_real_tree_unselect_all (FilesAbstractDirectoryView* base)
{
	FilesAbstractTreeView * self;
	FilesTreeView* _tmp0_;
	GtkTreeSelection* _tmp1_;
	self = (FilesAbstractTreeView*) base;
	_tmp0_ = self->tree;
	_tmp1_ = gtk_tree_view_get_selection ((GtkTreeView*) _tmp0_);
	gtk_tree_selection_unselect_all (_tmp1_);
}

static Block36Data*
block36_data_ref (Block36Data* _data36_)
{
	g_atomic_int_inc (&_data36_->_ref_count_);
	return _data36_;
}

static void
block36_data_unref (void * _userdata_)
{
	Block36Data* _data36_;
	_data36_ = (Block36Data*) _userdata_;
	if (g_atomic_int_dec_and_test (&_data36_->_ref_count_)) {
		FilesAbstractTreeView* self;
		self = _data36_->self;
		_g_object_unref0 (_data36_->selection);
		_g_object_unref0 (self);
		g_slice_free (Block36Data, _data36_);
	}
}

static Block37Data*
block37_data_ref (Block37Data* _data37_)
{
	g_atomic_int_inc (&_data37_->_ref_count_);
	return _data37_;
}

static void
__vala_GtkTreePath_free0_ (gpointer var)
{
	(var == NULL) ? NULL : (var = (_vala_GtkTreePath_free (var), NULL));
}

static inline void
_g_list_free___vala_GtkTreePath_free0_ (GList* self)
{
	g_list_free_full (self, (GDestroyNotify) __vala_GtkTreePath_free0_);
}

static void
block37_data_unref (void * _userdata_)
{
	Block37Data* _data37_;
	_data37_ = (Block37Data*) _userdata_;
	if (g_atomic_int_dec_and_test (&_data37_->_ref_count_)) {
		FilesAbstractTreeView* self;
		self = _data37_->_data36_->self;
		(_data37_->selected_paths == NULL) ? NULL : (_data37_->selected_paths = (_g_list_free___vala_GtkTreePath_free0_ (_data37_->selected_paths), NULL));
		block36_data_unref (_data37_->_data36_);
		_data37_->_data36_ = NULL;
		g_slice_free (Block37Data, _data37_);
	}
}

static GtkTreePath*
_vala_GtkTreePath_copy (GtkTreePath* self)
{
	return g_boxed_copy (gtk_tree_path_get_type (), self);
}

static gpointer
__vala_GtkTreePath_copy0 (gpointer self)
{
	return self ? _vala_GtkTreePath_copy (self) : NULL;
}

static void
____lambda78_ (Block37Data* _data37_,
               GtkTreeModel* m,
               GtkTreePath* p,
               GtkTreeIter* i)
{
	Block36Data* _data36_;
	FilesAbstractTreeView* self;
	GtkTreePath* _tmp0_;
	_data36_ = _data37_->_data36_;
	self = _data36_->self;
	g_return_if_fail (m != NULL);
	g_return_if_fail (p != NULL);
	g_return_if_fail (i != NULL);
	_tmp0_ = __vala_GtkTreePath_copy0 (p);
	_data37_->selected_paths = g_list_prepend (_data37_->selected_paths, _tmp0_);
}

static void
_____lambda78__gtk_tree_selection_foreach_func (GtkTreeModel* model,
                                                GtkTreePath* path,
                                                GtkTreeIter* iter,
                                                gpointer self)
{
	____lambda78_ (self, model, path, iter);
}

static void
____lambda79_ (Block37Data* _data37_,
               GtkTreePath* p)
{
	Block36Data* _data36_;
	FilesAbstractTreeView* self;
	GtkTreeSelection* _tmp0_;
	_data36_ = _data37_->_data36_;
	self = _data36_->self;
	g_return_if_fail (p != NULL);
	_tmp0_ = _data36_->selection;
	gtk_tree_selection_select_path (_tmp0_, p);
}

static void
_____lambda79__gfunc (gconstpointer data,
                      gpointer self)
{
	____lambda79_ (self, (GtkTreePath*) data);
}

static void
files_abstract_tree_view_real_select_path (FilesAbstractDirectoryView* base,
                                           GtkTreePath* path,
                                           gboolean cursor_follows)
{
	FilesAbstractTreeView * self;
	self = (FilesAbstractTreeView*) base;
	if (path != NULL) {
		Block36Data* _data36_;
		FilesTreeView* _tmp0_;
		GtkTreeSelection* _tmp1_;
		GtkTreeSelection* _tmp2_;
		GtkTreeSelection* _tmp3_;
		_data36_ = g_slice_new0 (Block36Data);
		_data36_->_ref_count_ = 1;
		_data36_->self = g_object_ref (self);
		_tmp0_ = self->tree;
		_tmp1_ = gtk_tree_view_get_selection ((GtkTreeView*) _tmp0_);
		_tmp2_ = _g_object_ref0 (_tmp1_);
		_data36_->selection = _tmp2_;
		_tmp3_ = _data36_->selection;
		gtk_tree_selection_select_path (_tmp3_, path);
		if (cursor_follows) {
			Block37Data* _data37_;
			GtkTreeSelection* _tmp4_;
			FilesTreeView* _tmp5_;
			GList* _tmp6_;
			_data37_ = g_slice_new0 (Block37Data);
			_data37_->_ref_count_ = 1;
			_data37_->_data36_ = block36_data_ref (_data36_);
			_data37_->selected_paths = NULL;
			_tmp4_ = _data36_->selection;
			gtk_tree_selection_selected_foreach (_tmp4_, _____lambda78__gtk_tree_selection_foreach_func, _data37_);
			_tmp5_ = self->tree;
			gtk_tree_view_set_cursor ((GtkTreeView*) _tmp5_, path, NULL, FALSE);
			_tmp6_ = _data37_->selected_paths;
			g_list_foreach (_tmp6_, _____lambda79__gfunc, _data37_);
			block37_data_unref (_data37_);
			_data37_ = NULL;
		}
		block36_data_unref (_data36_);
		_data36_ = NULL;
	}
}

static void
files_abstract_tree_view_real_unselect_path (FilesAbstractDirectoryView* base,
                                             GtkTreePath* path)
{
	FilesAbstractTreeView * self;
	self = (FilesAbstractTreeView*) base;
	if (path != NULL) {
		FilesTreeView* _tmp0_;
		GtkTreeSelection* _tmp1_;
		_tmp0_ = self->tree;
		_tmp1_ = gtk_tree_view_get_selection ((GtkTreeView*) _tmp0_);
		gtk_tree_selection_unselect_path (_tmp1_, path);
	}
}

static gboolean
files_abstract_tree_view_real_path_is_selected (FilesAbstractDirectoryView* base,
                                                GtkTreePath* path)
{
	FilesAbstractTreeView * self;
	gboolean result;
	self = (FilesAbstractTreeView*) base;
	if (path != NULL) {
		FilesTreeView* _tmp0_;
		GtkTreeSelection* _tmp1_;
		_tmp0_ = self->tree;
		_tmp1_ = gtk_tree_view_get_selection ((GtkTreeView*) _tmp0_);
		result = gtk_tree_selection_path_is_selected (_tmp1_, path);
		return result;
	} else {
		result = FALSE;
		return result;
	}
}

static gboolean
files_abstract_tree_view_real_get_visible_range (FilesAbstractDirectoryView* base,
                                                 GtkTreePath** start_path,
                                                 GtkTreePath** end_path)
{
	FilesAbstractTreeView * self;
	GtkTreePath* _vala_start_path = NULL;
	GtkTreePath* _vala_end_path = NULL;
	FilesTreeView* _tmp0_;
	GtkTreePath* _tmp1_ = NULL;
	GtkTreePath* _tmp2_ = NULL;
	gboolean _tmp3_;
	gboolean result;
	self = (FilesAbstractTreeView*) base;
	__vala_GtkTreePath_free0 (_vala_start_path);
	_vala_start_path = NULL;
	__vala_GtkTreePath_free0 (_vala_end_path);
	_vala_end_path = NULL;
	_tmp0_ = self->tree;
	_tmp3_ = gtk_tree_view_get_visible_range ((GtkTreeView*) _tmp0_, &_tmp1_, &_tmp2_);
	__vala_GtkTreePath_free0 (_vala_start_path);
	_vala_start_path = _tmp1_;
	__vala_GtkTreePath_free0 (_vala_end_path);
	_vala_end_path = _tmp2_;
	result = _tmp3_;
	if (start_path) {
		*start_path = _vala_start_path;
	} else {
		__vala_GtkTreePath_free0 (_vala_start_path);
	}
	if (end_path) {
		*end_path = _vala_end_path;
	} else {
		__vala_GtkTreePath_free0 (_vala_end_path);
	}
	return result;
}

static guint
files_abstract_tree_view_real_get_event_position_info (FilesAbstractDirectoryView* base,
                                                       gdouble wx,
                                                       gdouble wy,
                                                       GtkTreePath** path,
                                                       gboolean rubberband)
{
	FilesAbstractTreeView * self;
	GtkTreePath* _vala_path = NULL;
	GtkTreePath* p = NULL;
	GtkTreeViewColumn* c = NULL;
	guint zone = 0U;
	gint cx = 0;
	gint cy = 0;
	gint depth = 0;
	gint x = 0;
	gint y = 0;
	FilesTreeView* _tmp0_;
	gint _tmp1_ = 0;
	gint _tmp2_ = 0;
	FilesTreeView* _tmp3_;
	GtkTreePath* _tmp4_ = NULL;
	GtkTreeViewColumn* _tmp5_ = NULL;
	gint _tmp6_ = 0;
	gint _tmp7_ = 0;
	GtkTreePath* _tmp8_;
	GtkTreePath* _tmp9_;
	gint _tmp10_ = 0;
	GtkTreePath* _tmp11_;
	GdkRectangle rect = {0};
	FilesTreeView* _tmp13_;
	GtkTreePath* _tmp14_;
	GtkTreeViewColumn* _tmp15_;
	GdkRectangle _tmp16_ = {0};
	gint height = 0;
	GdkRectangle _tmp17_;
	gboolean is_blank = FALSE;
	FilesTreeView* _tmp18_;
	gboolean _tmp19_ = FALSE;
	gboolean _tmp20_ = FALSE;
	FilesAbstractDirectoryViewClickZone _tmp21_ = 0;
	gboolean _tmp22_ = FALSE;
	GtkTreePath* _tmp23_;
	gboolean _tmp24_ = FALSE;
	gboolean _tmp25_ = FALSE;
	GtkTreePath* _tmp26_;
	guint result;
	self = (FilesAbstractTreeView*) base;
	p = NULL;
	c = NULL;
	__vala_GtkTreePath_free0 (_vala_path);
	_vala_path = NULL;
	x = 0;
	y = 0;
	_tmp0_ = self->tree;
	gtk_tree_view_convert_widget_to_bin_window_coords ((GtkTreeView*) _tmp0_, (gint) wx, (gint) wy, &_tmp1_, &_tmp2_);
	x = _tmp1_;
	y = _tmp2_;
	_tmp3_ = self->tree;
	gtk_tree_view_get_path_at_pos ((GtkTreeView*) _tmp3_, x, y, &_tmp4_, &_tmp5_, &_tmp6_, &_tmp7_);
	__vala_GtkTreePath_free0 (p);
	p = _tmp4_;
	c = _tmp5_;
	cx = _tmp6_;
	cy = _tmp7_;
	_tmp8_ = p;
	_tmp9_ = __vala_GtkTreePath_copy0 (_tmp8_);
	__vala_GtkTreePath_free0 (_vala_path);
	_vala_path = _tmp9_;
	_tmp11_ = p;
	if (_tmp11_ != NULL) {
		GtkTreePath* _tmp12_;
		_tmp12_ = p;
		_tmp10_ = gtk_tree_path_get_depth (_tmp12_);
	} else {
		_tmp10_ = 0;
	}
	depth = _tmp10_;
	_tmp13_ = self->tree;
	_tmp14_ = p;
	_tmp15_ = c;
	gtk_tree_view_get_cell_area ((GtkTreeView*) _tmp13_, _tmp14_, _tmp15_, &_tmp16_);
	rect = _tmp16_;
	_tmp17_ = rect;
	height = _tmp17_.height;
	_tmp18_ = self->tree;
	is_blank = gtk_tree_view_is_blank_at_pos ((GtkTreeView*) _tmp18_, (gint) x, (gint) y, NULL, NULL, NULL, NULL);
	if (is_blank) {
		_tmp20_ = TRUE;
	} else {
		_tmp20_ = cy < 5;
	}
	if (_tmp20_) {
		_tmp19_ = TRUE;
	} else {
		_tmp19_ = cy > (height - 5);
	}
	is_blank = _tmp19_;
	_tmp23_ = p;
	if (_tmp23_ != NULL) {
		_tmp22_ = is_blank;
	} else {
		_tmp22_ = FALSE;
	}
	if (_tmp22_) {
		_tmp21_ = FILES_ABSTRACT_DIRECTORY_VIEW_CLICK_ZONE_BLANK_PATH;
	} else {
		_tmp21_ = FILES_ABSTRACT_DIRECTORY_VIEW_CLICK_ZONE_INVALID;
	}
	zone = (guint) _tmp21_;
	_tmp26_ = p;
	if (_tmp26_ != NULL) {
		GtkTreeViewColumn* _tmp27_;
		_tmp27_ = c;
		_tmp25_ = _tmp27_ != NULL;
	} else {
		_tmp25_ = FALSE;
	}
	if (_tmp25_) {
		GtkTreeViewColumn* _tmp28_;
		GtkTreeViewColumn* _tmp29_;
		_tmp28_ = c;
		_tmp29_ = self->name_column;
		_tmp24_ = _tmp28_ == _tmp29_;
	} else {
		_tmp24_ = FALSE;
	}
	if (_tmp24_) {
		FilesFile* file = NULL;
		FilesListModel* _tmp30_;
		GtkTreePath* _tmp31_;
		FilesFile* _tmp32_;
		FilesFile* _tmp33_;
		_tmp30_ = ((FilesAbstractDirectoryView*) self)->model;
		_tmp31_ = p;
		_tmp32_ = files_list_model_file_for_path (_tmp30_, _tmp31_);
		file = _tmp32_;
		_tmp33_ = file;
		if (_tmp33_ == NULL) {
			zone = (guint) FILES_ABSTRACT_DIRECTORY_VIEW_CLICK_ZONE_INVALID;
		} else {
			gboolean rtl = FALSE;
			gint icon_text_edge = 0;
			gboolean _tmp40_ = FALSE;
			rtl = gtk_widget_get_direction ((GtkWidget*) self) == GTK_TEXT_DIR_RTL;
			if (rtl) {
				FilesTreeView* _tmp34_;
				GdkRectangle _tmp35_;
				gint _tmp36_;
				gint _tmp37_;
				_tmp34_ = self->tree;
				_tmp35_ = rect;
				_tmp36_ = files_abstract_directory_view_get_icon_size ((FilesAbstractDirectoryView*) self);
				_tmp37_ = _tmp36_;
				icon_text_edge = ((gtk_widget_get_allocated_width ((GtkWidget*) _tmp34_) - _tmp35_.x) - _tmp37_) - 16;
			} else {
				gint _tmp38_;
				gint _tmp39_;
				_tmp38_ = files_abstract_directory_view_get_icon_size ((FilesAbstractDirectoryView*) self);
				_tmp39_ = _tmp38_;
				icon_text_edge = _tmp39_ + 16;
			}
			if (rtl) {
				_tmp40_ = cx > icon_text_edge;
			} else {
				_tmp40_ = cx < icon_text_edge;
			}
			if (_tmp40_) {
				gboolean on_helper = FALSE;
				gboolean on_icon = FALSE;
				gboolean _tmp41_;
				on_helper = FALSE;
				_tmp41_ = files_abstract_directory_view_is_on_icon ((FilesAbstractDirectoryView*) self, (gint) x, (gint) y, &on_helper);
				on_icon = _tmp41_;
				if (on_helper) {
					zone = (guint) FILES_ABSTRACT_DIRECTORY_VIEW_CLICK_ZONE_HELPER;
				} else {
					if (on_icon) {
						zone = (guint) FILES_ABSTRACT_DIRECTORY_VIEW_CLICK_ZONE_ICON;
					} else {
						zone = (guint) FILES_ABSTRACT_DIRECTORY_VIEW_CLICK_ZONE_EXPANDER;
					}
				}
			} else {
				GtkTreeIter iter = {0};
				FilesListModel* _tmp42_;
				GtkTreePath* _tmp43_;
				GtkTreeIter _tmp44_ = {0};
				gchar* text = NULL;
				FilesListModel* _tmp45_;
				GtkTreeIter _tmp46_;
				gchar* _tmp47_ = NULL;
				FilesTextRenderer* _tmp48_;
				const gchar* _tmp49_;
				FilesTextRenderer* _tmp50_;
				gint _tmp51_;
				gint _tmp52_;
				gint active_width = 0;
				FilesTextRenderer* _tmp53_;
				FilesTextRenderer* _tmp54_;
				gint _tmp55_;
				gint _tmp56_;
				gboolean is_on_active = FALSE;
				_tmp42_ = ((FilesAbstractDirectoryView*) self)->model;
				_tmp43_ = _vala_path;
				gtk_tree_model_get_iter ((GtkTreeModel*) _tmp42_, &_tmp44_, _tmp43_);
				iter = _tmp44_;
				text = NULL;
				_tmp45_ = ((FilesAbstractDirectoryView*) self)->model;
				_tmp46_ = iter;
				gtk_tree_model_get ((GtkTreeModel*) _tmp45_, &_tmp46_, FILES_LIST_MODEL_COLUMN_ID_FILENAME, &_tmp47_, -1);
				_g_free0 (text);
				text = _tmp47_;
				_tmp48_ = ((FilesAbstractDirectoryView*) self)->name_renderer;
				_tmp49_ = text;
				_tmp50_ = ((FilesAbstractDirectoryView*) self)->name_renderer;
				g_object_get ((GtkCellRenderer*) _tmp50_, "width", &_tmp51_, NULL);
				_tmp52_ = _tmp51_;
				files_text_renderer_set_up_layout (_tmp48_, _tmp49_, _tmp52_);
				_tmp53_ = ((FilesAbstractDirectoryView*) self)->name_renderer;
				_tmp54_ = ((FilesAbstractDirectoryView*) self)->name_renderer;
				_tmp55_ = files_text_renderer_get_double_border_radius (_tmp54_);
				_tmp56_ = _tmp55_;
				active_width = _tmp53_->text_width + _tmp56_;
				if (rtl) {
					is_on_active = cx >= ((icon_text_edge - active_width) - 8);
				} else {
					is_on_active = cx <= ((icon_text_edge + active_width) + 8);
				}
				if (is_on_active) {
					zone = (guint) FILES_ABSTRACT_DIRECTORY_VIEW_CLICK_ZONE_NAME;
				} else {
					if (!is_blank) {
						zone = (guint) FILES_ABSTRACT_DIRECTORY_VIEW_CLICK_ZONE_BLANK_PATH;
					}
				}
				_g_free0 (text);
			}
		}
		_g_object_unref0 (file);
	} else {
		GtkTreeViewColumn* _tmp57_;
		GtkTreeViewColumn* _tmp58_;
		_tmp57_ = c;
		_tmp58_ = self->name_column;
		if (_tmp57_ != _tmp58_) {
			zone = (guint) FILES_ABSTRACT_DIRECTORY_VIEW_CLICK_ZONE_BLANK_NO_PATH;
		}
	}
	result = zone;
	__vala_GtkTreePath_free0 (p);
	if (path) {
		*path = _vala_path;
	} else {
		__vala_GtkTreePath_free0 (_vala_path);
	}
	return result;
}

static void
files_abstract_tree_view_real_scroll_to_path (FilesAbstractDirectoryView* base,
                                              GtkTreePath* path,
                                              gboolean scroll_to_top)
{
	FilesAbstractTreeView * self;
	FilesTreeView* _tmp0_;
	GtkTreeViewColumn* _tmp1_;
	self = (FilesAbstractTreeView*) base;
	g_return_if_fail (path != NULL);
	_tmp0_ = self->tree;
	_tmp1_ = self->name_column;
	gtk_tree_view_scroll_to_cell ((GtkTreeView*) _tmp0_, path, _tmp1_, scroll_to_top, 0.5f, 0.5f);
}

static void
files_abstract_tree_view_real_set_cursor_on_cell (FilesAbstractDirectoryView* base,
                                                  GtkTreePath* path,
                                                  GtkCellRenderer* renderer,
                                                  gboolean start_editing,
                                                  gboolean scroll_to_top)
{
	FilesAbstractTreeView * self;
	FilesTreeView* _tmp0_;
	GtkTreeViewColumn* _tmp1_;
	self = (FilesAbstractTreeView*) base;
	g_return_if_fail (path != NULL);
	g_return_if_fail (renderer != NULL);
	files_abstract_directory_view_scroll_to_cell ((FilesAbstractDirectoryView*) self, path, scroll_to_top);
	_tmp0_ = self->tree;
	_tmp1_ = self->name_column;
	gtk_tree_view_set_cursor_on_cell ((GtkTreeView*) _tmp0_, path, _tmp1_, renderer, start_editing);
}

static void
files_abstract_tree_view_real_set_cursor (FilesAbstractDirectoryView* base,
                                          GtkTreePath* path,
                                          gboolean start_editing,
                                          gboolean select,
                                          gboolean scroll_to_top)
{
	FilesAbstractTreeView * self;
	GtkTreeSelection* selection = NULL;
	FilesTreeView* _tmp0_;
	GtkTreeSelection* _tmp1_;
	GtkTreeSelection* _tmp2_;
	gboolean no_selection = FALSE;
	GList* _tmp3_;
	FilesTextRenderer* _tmp6_;
	self = (FilesAbstractTreeView*) base;
	if (path == NULL) {
		return;
	}
	_tmp0_ = self->tree;
	_tmp1_ = gtk_tree_view_get_selection ((GtkTreeView*) _tmp0_);
	_tmp2_ = _g_object_ref0 (_tmp1_);
	selection = _tmp2_;
	_tmp3_ = ((FilesAbstractDirectoryView*) self)->selected_files;
	no_selection = _tmp3_ == NULL;
	if (!select) {
		GtkTreeSelection* _tmp4_;
		guint _tmp5_;
		_tmp4_ = selection;
		g_signal_parse_name ("changed", gtk_tree_selection_get_type (), &_tmp5_, NULL, FALSE);
		g_signal_handlers_disconnect_matched (_tmp4_, G_SIGNAL_MATCH_ID | G_SIGNAL_MATCH_FUNC | G_SIGNAL_MATCH_DATA, _tmp5_, 0, NULL, (GCallback) _files_abstract_directory_view_on_view_selection_changed_gtk_tree_selection_changed, (FilesAbstractDirectoryView*) self);
	} else {
		files_abstract_directory_view_select_path ((FilesAbstractDirectoryView*) self, path, FALSE);
	}
	_tmp6_ = ((FilesAbstractDirectoryView*) self)->name_renderer;
	files_abstract_directory_view_set_cursor_on_cell ((FilesAbstractDirectoryView*) self, path, (GtkCellRenderer*) _tmp6_, start_editing, scroll_to_top);
	if (!select) {
		GtkTreeSelection* _tmp7_;
		if (no_selection) {
			files_abstract_directory_view_unselect_path ((FilesAbstractDirectoryView*) self, path);
		}
		_tmp7_ = selection;
		g_signal_connect_object (_tmp7_, "changed", (GCallback) _files_abstract_directory_view_on_view_selection_changed_gtk_tree_selection_changed, (FilesAbstractDirectoryView*) self, 0);
	}
	_g_object_unref0 (selection);
}

static GtkTreePath*
files_abstract_tree_view_real_get_path_at_cursor (FilesAbstractDirectoryView* base)
{
	FilesAbstractTreeView * self;
	GtkTreePath* path = NULL;
	FilesTreeView* _tmp0_;
	GtkTreePath* _tmp1_ = NULL;
	GtkTreePath* result;
	self = (FilesAbstractTreeView*) base;
	_tmp0_ = self->tree;
	gtk_tree_view_get_cursor ((GtkTreeView*) _tmp0_, &_tmp1_, NULL);
	__vala_GtkTreePath_free0 (path);
	path = _tmp1_;
	result = path;
	return result;
}

static void
files_abstract_tree_view_real_freeze_tree (FilesAbstractDirectoryView* base)
{
	FilesAbstractTreeView * self;
	gboolean _tmp0_;
	gboolean _tmp1_;
	self = (FilesAbstractTreeView*) base;
	_tmp0_ = files_abstract_directory_view_get_tree_frozen ((FilesAbstractDirectoryView*) self);
	_tmp1_ = _tmp0_;
	if (!_tmp1_) {
		FilesTreeView* _tmp2_;
		_tmp2_ = self->tree;
		gtk_widget_freeze_child_notify ((GtkWidget*) _tmp2_);
		files_abstract_directory_view_set_tree_frozen ((FilesAbstractDirectoryView*) self, TRUE);
	}
}

static void
files_abstract_tree_view_real_thaw_tree (FilesAbstractDirectoryView* base)
{
	FilesAbstractTreeView * self;
	gboolean _tmp0_;
	gboolean _tmp1_;
	self = (FilesAbstractTreeView*) base;
	_tmp0_ = files_abstract_directory_view_get_tree_frozen ((FilesAbstractDirectoryView*) self);
	_tmp1_ = _tmp0_;
	if (_tmp1_) {
		FilesTreeView* _tmp2_;
		_tmp2_ = self->tree;
		gtk_widget_thaw_child_notify ((GtkWidget*) _tmp2_);
		files_abstract_directory_view_set_tree_frozen ((FilesAbstractDirectoryView*) self, FALSE);
	}
}

static void
files_abstract_tree_view_real_freeze_child_notify (FilesAbstractDirectoryView* base)
{
	FilesAbstractTreeView * self;
	FilesTreeView* _tmp0_;
	self = (FilesAbstractTreeView*) base;
	_tmp0_ = self->tree;
	gtk_widget_freeze_child_notify ((GtkWidget*) _tmp0_);
}

static void
files_abstract_tree_view_real_thaw_child_notify (FilesAbstractDirectoryView* base)
{
	FilesAbstractTreeView * self;
	gboolean _tmp0_;
	gboolean _tmp1_;
	self = (FilesAbstractTreeView*) base;
	_tmp0_ = files_abstract_directory_view_get_tree_frozen ((FilesAbstractDirectoryView*) self);
	_tmp1_ = _tmp0_;
	if (!_tmp1_) {
		FilesTreeView* _tmp2_;
		_tmp2_ = self->tree;
		gtk_widget_thaw_child_notify ((GtkWidget*) _tmp2_);
	}
}

static void
files_abstract_tree_view_class_init (FilesAbstractTreeViewClass * klass,
                                     gpointer klass_data)
{
	files_abstract_tree_view_parent_class = g_type_class_peek_parent (klass);
	((FilesAbstractTreeViewClass *) klass)->set_up_icon_renderer = (void (*) (FilesAbstractTreeView*)) files_abstract_tree_view_real_set_up_icon_renderer;
	((FilesAbstractDirectoryViewClass *) klass)->connect_tree_signals = (void (*) (FilesAbstractDirectoryView*)) files_abstract_tree_view_real_connect_tree_signals;
	((FilesAbstractDirectoryViewClass *) klass)->disconnect_tree_signals = (void (*) (FilesAbstractDirectoryView*)) files_abstract_tree_view_real_disconnect_tree_signals;
	((FilesAbstractDirectoryViewClass *) klass)->create_view = (GtkWidget* (*) (FilesAbstractDirectoryView*)) files_abstract_tree_view_real_create_view;
	((FilesAbstractDirectoryViewClass *) klass)->change_zoom_level = (void (*) (FilesAbstractDirectoryView*)) files_abstract_tree_view_real_change_zoom_level;
	((FilesAbstractDirectoryViewClass *) klass)->get_selected_paths = (GList* (*) (FilesAbstractDirectoryView*)) files_abstract_tree_view_real_get_selected_paths;
	((FilesAbstractDirectoryViewClass *) klass)->highlight_path = (void (*) (FilesAbstractDirectoryView*, GtkTreePath*)) files_abstract_tree_view_real_highlight_path;
	((FilesAbstractDirectoryViewClass *) klass)->get_path_at_pos = (GtkTreePath* (*) (FilesAbstractDirectoryView*, gint, gint)) files_abstract_tree_view_real_get_path_at_pos;
	((FilesAbstractDirectoryViewClass *) klass)->tree_select_all = (void (*) (FilesAbstractDirectoryView*)) files_abstract_tree_view_real_tree_select_all;
	((FilesAbstractDirectoryViewClass *) klass)->tree_unselect_all = (void (*) (FilesAbstractDirectoryView*)) files_abstract_tree_view_real_tree_unselect_all;
	((FilesAbstractDirectoryViewClass *) klass)->select_path = (void (*) (FilesAbstractDirectoryView*, GtkTreePath*, gboolean)) files_abstract_tree_view_real_select_path;
	((FilesAbstractDirectoryViewClass *) klass)->unselect_path = (void (*) (FilesAbstractDirectoryView*, GtkTreePath*)) files_abstract_tree_view_real_unselect_path;
	((FilesAbstractDirectoryViewClass *) klass)->path_is_selected = (gboolean (*) (FilesAbstractDirectoryView*, GtkTreePath*)) files_abstract_tree_view_real_path_is_selected;
	((FilesAbstractDirectoryViewClass *) klass)->get_visible_range = (gboolean (*) (FilesAbstractDirectoryView*, GtkTreePath**, GtkTreePath**)) files_abstract_tree_view_real_get_visible_range;
	((FilesAbstractDirectoryViewClass *) klass)->get_event_position_info = (guint (*) (FilesAbstractDirectoryView*, gdouble, gdouble, GtkTreePath**, gboolean)) files_abstract_tree_view_real_get_event_position_info;
	((FilesAbstractDirectoryViewClass *) klass)->scroll_to_path = (void (*) (FilesAbstractDirectoryView*, GtkTreePath*, gboolean)) files_abstract_tree_view_real_scroll_to_path;
	((FilesAbstractDirectoryViewClass *) klass)->set_cursor_on_cell = (void (*) (FilesAbstractDirectoryView*, GtkTreePath*, GtkCellRenderer*, gboolean, gboolean)) files_abstract_tree_view_real_set_cursor_on_cell;
	((FilesAbstractDirectoryViewClass *) klass)->set_cursor = (void (*) (FilesAbstractDirectoryView*, GtkTreePath*, gboolean, gboolean, gboolean)) files_abstract_tree_view_real_set_cursor;
	((FilesAbstractDirectoryViewClass *) klass)->get_path_at_cursor = (GtkTreePath* (*) (FilesAbstractDirectoryView*)) files_abstract_tree_view_real_get_path_at_cursor;
	((FilesAbstractDirectoryViewClass *) klass)->freeze_tree = (void (*) (FilesAbstractDirectoryView*)) files_abstract_tree_view_real_freeze_tree;
	((FilesAbstractDirectoryViewClass *) klass)->thaw_tree = (void (*) (FilesAbstractDirectoryView*)) files_abstract_tree_view_real_thaw_tree;
	((FilesAbstractDirectoryViewClass *) klass)->freeze_child_notify = (void (*) (FilesAbstractDirectoryView*)) files_abstract_tree_view_real_freeze_child_notify;
	((FilesAbstractDirectoryViewClass *) klass)->thaw_child_notify = (void (*) (FilesAbstractDirectoryView*)) files_abstract_tree_view_real_thaw_child_notify;
	G_OBJECT_CLASS (klass)->finalize = files_abstract_tree_view_finalize;
}

static void
files_abstract_tree_view_instance_init (FilesAbstractTreeView * self,
                                        gpointer klass)
{
}

static void
files_abstract_tree_view_finalize (GObject * obj)
{
	FilesAbstractTreeView * self;
	self = G_TYPE_CHECK_INSTANCE_CAST (obj, FILES_TYPE_ABSTRACT_TREE_VIEW, FilesAbstractTreeView);
	g_debug ("AbstractTreeView.vala:30: ATV destruct");
	_g_object_unref0 (self->tree);
	_g_object_unref0 (self->name_column);
	G_OBJECT_CLASS (files_abstract_tree_view_parent_class)->finalize (obj);
}

 G_GNUC_NO_INLINE static GType
files_abstract_tree_view_get_type_once (void)
{
	static const GTypeInfo g_define_type_info = { sizeof (FilesAbstractTreeViewClass), (GBaseInitFunc) NULL, (GBaseFinalizeFunc) NULL, (GClassInitFunc) files_abstract_tree_view_class_init, (GClassFinalizeFunc) NULL, NULL, sizeof (FilesAbstractTreeView), 0, (GInstanceInitFunc) files_abstract_tree_view_instance_init, NULL };
	GType files_abstract_tree_view_type_id;
	files_abstract_tree_view_type_id = g_type_register_static (FILES_TYPE_ABSTRACT_DIRECTORY_VIEW, "FilesAbstractTreeView", &g_define_type_info, G_TYPE_FLAG_ABSTRACT);
	return files_abstract_tree_view_type_id;
}

GType
files_abstract_tree_view_get_type (void)
{
	static volatile gsize files_abstract_tree_view_type_id__once = 0;
	if (g_once_init_enter (&files_abstract_tree_view_type_id__once)) {
		GType files_abstract_tree_view_type_id;
		files_abstract_tree_view_type_id = files_abstract_tree_view_get_type_once ();
		g_once_init_leave (&files_abstract_tree_view_type_id__once, files_abstract_tree_view_type_id);
	}
	return files_abstract_tree_view_type_id__once;
}

static inline gpointer
files_tree_view_get_instance_private (FilesTreeView* self)
{
	return G_STRUCT_MEMBER_P (self, FilesTreeView_private_offset);
}

FilesTreeView*
files_tree_view_construct (GType object_type)
{
	FilesTreeView * self = NULL;
	self = (FilesTreeView*) g_object_new (object_type, NULL);
	return self;
}

FilesTreeView*
files_tree_view_new (void)
{
	return files_tree_view_construct (FILES_TYPE_TREE_VIEW);
}

FilesZoomLevel
files_tree_view_get_zoom_level (FilesTreeView* self)
{
	FilesZoomLevel result;
	g_return_val_if_fail (self != NULL, 0);
	result = self->priv->_zoom_level;
	return result;
}

void
files_tree_view_set_zoom_level (FilesTreeView* self,
                                FilesZoomLevel value)
{
	gboolean _tmp0_ = FALSE;
	g_return_if_fail (self != NULL);
	if (self->priv->_zoom_level == value) {
		_tmp0_ = TRUE;
	} else {
		_tmp0_ = !gtk_widget_get_realized ((GtkWidget*) self);
	}
	if (_tmp0_) {
		return;
	} else {
		self->priv->_zoom_level = value;
	}
	g_object_notify_by_pspec ((GObject *) self, files_tree_view_properties[FILES_TREE_VIEW_ZOOM_LEVEL_PROPERTY]);
}

static void
files_tree_view_class_init (FilesTreeViewClass * klass,
                            gpointer klass_data)
{
	files_tree_view_parent_class = g_type_class_peek_parent (klass);
	g_type_class_adjust_private_offset (klass, &FilesTreeView_private_offset);
	G_OBJECT_CLASS (klass)->get_property = _vala_files_tree_view_get_property;
	G_OBJECT_CLASS (klass)->set_property = _vala_files_tree_view_set_property;
	G_OBJECT_CLASS (klass)->finalize = files_tree_view_finalize;
	g_object_class_install_property (G_OBJECT_CLASS (klass), FILES_TREE_VIEW_ZOOM_LEVEL_PROPERTY, files_tree_view_properties[FILES_TREE_VIEW_ZOOM_LEVEL_PROPERTY] = g_param_spec_enum ("zoom-level", "zoom-level", "zoom-level", FILES_TYPE_ZOOM_LEVEL, 0, G_PARAM_STATIC_STRINGS | G_PARAM_READABLE | G_PARAM_WRITABLE));
}

static void
files_tree_view_instance_init (FilesTreeView * self,
                               gpointer klass)
{
	self->priv = files_tree_view_get_instance_private (self);
	self->priv->_zoom_level = FILES_ZOOM_LEVEL_INVALID;
}

static void
files_tree_view_finalize (GObject * obj)
{
	FilesTreeView * self;
	self = G_TYPE_CHECK_INSTANCE_CAST (obj, FILES_TYPE_TREE_VIEW, FilesTreeView);
	G_OBJECT_CLASS (files_tree_view_parent_class)->finalize (obj);
}

 G_GNUC_NO_INLINE static GType
files_tree_view_get_type_once (void)
{
	static const GTypeInfo g_define_type_info = { sizeof (FilesTreeViewClass), (GBaseInitFunc) NULL, (GBaseFinalizeFunc) NULL, (GClassInitFunc) files_tree_view_class_init, (GClassFinalizeFunc) NULL, NULL, sizeof (FilesTreeView), 0, (GInstanceInitFunc) files_tree_view_instance_init, NULL };
	GType files_tree_view_type_id;
	files_tree_view_type_id = g_type_register_static (gtk_tree_view_get_type (), "FilesTreeView", &g_define_type_info, 0);
	FilesTreeView_private_offset = g_type_add_instance_private (files_tree_view_type_id, sizeof (FilesTreeViewPrivate));
	return files_tree_view_type_id;
}

GType
files_tree_view_get_type (void)
{
	static volatile gsize files_tree_view_type_id__once = 0;
	if (g_once_init_enter (&files_tree_view_type_id__once)) {
		GType files_tree_view_type_id;
		files_tree_view_type_id = files_tree_view_get_type_once ();
		g_once_init_leave (&files_tree_view_type_id__once, files_tree_view_type_id);
	}
	return files_tree_view_type_id__once;
}

static void
_vala_files_tree_view_get_property (GObject * object,
                                    guint property_id,
                                    GValue * value,
                                    GParamSpec * pspec)
{
	FilesTreeView * self;
	self = G_TYPE_CHECK_INSTANCE_CAST (object, FILES_TYPE_TREE_VIEW, FilesTreeView);
	switch (property_id) {
		case FILES_TREE_VIEW_ZOOM_LEVEL_PROPERTY:
		g_value_set_enum (value, files_tree_view_get_zoom_level (self));
		break;
		default:
		G_OBJECT_WARN_INVALID_PROPERTY_ID (object, property_id, pspec);
		break;
	}
}

static void
_vala_files_tree_view_set_property (GObject * object,
                                    guint property_id,
                                    const GValue * value,
                                    GParamSpec * pspec)
{
	FilesTreeView * self;
	self = G_TYPE_CHECK_INSTANCE_CAST (object, FILES_TYPE_TREE_VIEW, FilesTreeView);
	switch (property_id) {
		case FILES_TREE_VIEW_ZOOM_LEVEL_PROPERTY:
		files_tree_view_set_zoom_level (self, g_value_get_enum (value));
		break;
		default:
		G_OBJECT_WARN_INVALID_PROPERTY_ID (object, property_id, pspec);
		break;
	}
}

