/* ColumnView.c generated by valac 0.56.19, the Vala compiler
 * generated from ColumnView.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>

#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;

#define FILES_TYPE_COLUMN_VIEW (files_column_view_get_type ())
#define FILES_COLUMN_VIEW(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), FILES_TYPE_COLUMN_VIEW, FilesColumnView))
#define FILES_COLUMN_VIEW_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), FILES_TYPE_COLUMN_VIEW, FilesColumnViewClass))
#define FILES_IS_COLUMN_VIEW(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), FILES_TYPE_COLUMN_VIEW))
#define FILES_IS_COLUMN_VIEW_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), FILES_TYPE_COLUMN_VIEW))
#define FILES_COLUMN_VIEW_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), FILES_TYPE_COLUMN_VIEW, FilesColumnViewClass))

typedef struct _FilesColumnView FilesColumnView;
typedef struct _FilesColumnViewClass FilesColumnViewClass;
typedef struct _FilesColumnViewPrivate FilesColumnViewPrivate;
enum  {
	FILES_COLUMN_VIEW_0_PROPERTY,
	FILES_COLUMN_VIEW_NUM_PROPERTIES
};
static GParamSpec* files_column_view_properties[FILES_COLUMN_VIEW_NUM_PROPERTIES];
#define _g_object_unref0(var) ((var == NULL) ? NULL : (var = (g_object_unref (var), NULL)))
#define __vala_GtkTreeIter_free0(var) ((var == NULL) ? NULL : (var = (_vala_GtkTreeIter_free (var), NULL)))

#define FILES_VIEW_TYPE_MILLER (files_view_miller_get_type ())
#define FILES_VIEW_MILLER(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), FILES_VIEW_TYPE_MILLER, FilesViewMiller))
#define FILES_VIEW_MILLER_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), FILES_VIEW_TYPE_MILLER, FilesViewMillerClass))
#define FILES_VIEW_IS_MILLER(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), FILES_VIEW_TYPE_MILLER))
#define FILES_VIEW_IS_MILLER_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), FILES_VIEW_TYPE_MILLER))
#define FILES_VIEW_MILLER_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), FILES_VIEW_TYPE_MILLER, FilesViewMillerClass))

typedef struct _FilesViewMiller FilesViewMiller;
typedef struct _FilesViewMillerClass FilesViewMillerClass;

#define FILES_VIEW_TYPE_VIEW_CONTAINER (files_view_view_container_get_type ())
#define FILES_VIEW_VIEW_CONTAINER(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), FILES_VIEW_TYPE_VIEW_CONTAINER, FilesViewViewContainer))
#define FILES_VIEW_VIEW_CONTAINER_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), FILES_VIEW_TYPE_VIEW_CONTAINER, FilesViewViewContainerClass))
#define FILES_VIEW_IS_VIEW_CONTAINER(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), FILES_VIEW_TYPE_VIEW_CONTAINER))
#define FILES_VIEW_IS_VIEW_CONTAINER_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), FILES_VIEW_TYPE_VIEW_CONTAINER))
#define FILES_VIEW_VIEW_CONTAINER_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), FILES_VIEW_TYPE_VIEW_CONTAINER, FilesViewViewContainerClass))

typedef struct _FilesViewViewContainer FilesViewViewContainer;
typedef struct _FilesViewViewContainerClass FilesViewViewContainerClass;

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 _FilesColumnView {
	FilesAbstractTreeView parent_instance;
	FilesColumnViewPrivate * priv;
};

struct _FilesColumnViewClass {
	FilesAbstractTreeViewClass parent_class;
};

struct _FilesColumnViewPrivate {
	gboolean awaiting_double_click;
	guint double_click_timeout_id;
};

static gint FilesColumnView_private_offset;
static gpointer files_column_view_parent_class = NULL;
VALA_EXTERN GSettings* files_column_view_settings;

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 GType files_column_view_get_type (void) G_GNUC_CONST ;
G_DEFINE_AUTOPTR_CLEANUP_FUNC (FilesColumnView, g_object_unref)
VALA_EXTERN void files_abstract_tree_view_set_up_icon_renderer (FilesAbstractTreeView* self);
VALA_EXTERN GSettings* files_abstract_directory_view_get_view_settings (FilesAbstractDirectoryView* self);
VALA_EXTERN GtkWidget* files_abstract_directory_view_create_view (FilesAbstractDirectoryView* self);
VALA_EXTERN gboolean files_abstract_directory_view_handle_primary_button_click (FilesAbstractDirectoryView* self,
                                                                    guint n_press,
                                                                    GdkModifierType mods,
                                                                    GtkTreePath* path);
VALA_EXTERN gboolean files_abstract_directory_view_handle_default_button_click (FilesAbstractDirectoryView* self);
VALA_EXTERN void files_abstract_directory_view_cancel (FilesAbstractDirectoryView* self);
VALA_EXTERN FilesColumnView* files_column_view_new (FilesViewSlot* _slot);
VALA_EXTERN FilesColumnView* files_column_view_construct (GType object_type,
                                              FilesViewSlot* _slot);
VALA_EXTERN FilesAbstractTreeView* files_abstract_tree_view_construct (GType object_type,
                                                           FilesViewSlot* _slot);
static void files_column_view_real_set_up_icon_renderer (FilesAbstractTreeView* base);
VALA_EXTERN void files_column_view_on_view_selection_changed (FilesColumnView* self);
VALA_EXTERN void files_abstract_directory_view_set_active_slot (FilesAbstractDirectoryView* self,
                                                    gboolean scroll);
VALA_EXTERN void files_abstract_directory_view_on_view_selection_changed (FilesAbstractDirectoryView* self);
static void files_column_view_cancel_await_double_click (FilesColumnView* self);
VALA_EXTERN void files_abstract_directory_view_set_is_frozen (FilesAbstractDirectoryView* self,
                                                  gboolean value);
static gboolean files_column_view_not_double_click (FilesColumnView* self);
VALA_EXTERN gboolean files_abstract_directory_view_selection_only_contains_folders (FilesAbstractDirectoryView* self,
                                                                        GList* list);
VALA_EXTERN GList* files_abstract_directory_view_get_selected_files (FilesAbstractDirectoryView* self);
VALA_EXTERN void files_abstract_directory_view_activate_selected_items (FilesAbstractDirectoryView* self,
                                                            FilesOpenFlag flag,
                                                            GList* selection);
static GSettings* files_column_view_real_get_view_settings (FilesAbstractDirectoryView* base);
static GtkWidget* files_column_view_real_create_view (FilesAbstractDirectoryView* base);
static gboolean files_column_view_real_handle_primary_button_click (FilesAbstractDirectoryView* base,
                                                             guint n_press,
                                                             GdkModifierType mods,
                                                             GtkTreePath* path);
static void _vala_GtkTreeIter_free (GtkTreeIter* self);
static GtkTreeIter* _vala_GtkTreeIter_copy (GtkTreeIter* self);
static gboolean _____lambda83_ (FilesColumnView* self);
static gboolean ______lambda83__gsource_func (gpointer self);
VALA_EXTERN GType files_view_miller_get_type (void) G_GNUC_CONST ;
G_DEFINE_AUTOPTR_CLEANUP_FUNC (FilesViewMiller, g_object_unref)
VALA_EXTERN GType files_view_view_container_get_type (void) G_GNUC_CONST ;
G_DEFINE_AUTOPTR_CLEANUP_FUNC (FilesViewViewContainer, g_object_unref)
VALA_EXTERN FilesViewViewContainer* files_view_slot_get_ctab (FilesViewSlot* self);
VALA_EXTERN FilesAbstractSlot* files_view_view_container_get_view (FilesViewViewContainer* self);
VALA_EXTERN void files_view_miller_clear_file_details (FilesViewMiller* self);
static gboolean ____lambda84_ (FilesColumnView* self);
static gboolean _____lambda84__gsource_func (gpointer self);
VALA_EXTERN void files_abstract_directory_view_load_root_location (FilesAbstractDirectoryView* self,
                                                       GFile* location);
static gboolean files_column_view_real_handle_default_button_click (FilesAbstractDirectoryView* base);
static void files_column_view_real_cancel (FilesAbstractDirectoryView* base);
static void files_column_view_finalize (GObject * obj);
static GType files_column_view_get_type_once (void);

static inline gpointer
files_column_view_get_instance_private (FilesColumnView* self)
{
	return G_STRUCT_MEMBER_P (self, FilesColumnView_private_offset);
}

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

FilesColumnView*
files_column_view_new (FilesViewSlot* _slot)
{
	return files_column_view_construct (FILES_TYPE_COLUMN_VIEW, _slot);
}

static void
files_column_view_real_set_up_icon_renderer (FilesAbstractTreeView* base)
{
	FilesColumnView * self;
	FilesIconRenderer* _tmp0_;
	self = (FilesColumnView*) base;
	_tmp0_ = files_icon_renderer_new ();
	g_object_ref_sink (_tmp0_);
	_g_object_unref0 (((FilesAbstractDirectoryView*) self)->icon_renderer);
	((FilesAbstractDirectoryView*) self)->icon_renderer = _tmp0_;
}

void
files_column_view_on_view_selection_changed (FilesColumnView* self)
{
	g_return_if_fail (self != NULL);
	files_abstract_directory_view_set_active_slot ((FilesAbstractDirectoryView*) self, TRUE);
	files_abstract_directory_view_on_view_selection_changed ((FilesAbstractDirectoryView*) G_TYPE_CHECK_INSTANCE_CAST (self, FILES_TYPE_ABSTRACT_TREE_VIEW, FilesAbstractTreeView));
}

static void
files_column_view_cancel_await_double_click (FilesColumnView* self)
{
	g_return_if_fail (self != NULL);
	if (self->priv->awaiting_double_click) {
		g_source_remove (self->priv->double_click_timeout_id);
		self->priv->double_click_timeout_id = (guint) 0;
		self->priv->awaiting_double_click = FALSE;
		files_abstract_directory_view_set_is_frozen ((FilesAbstractDirectoryView*) self, FALSE);
	}
}

static gboolean
files_column_view_not_double_click (FilesColumnView* self)
{
	gboolean result;
	g_return_val_if_fail (self != NULL, FALSE);
	if (self->priv->double_click_timeout_id != ((guint) 0)) {
		gboolean _tmp0_ = FALSE;
		GList* _tmp1_;
		self->priv->awaiting_double_click = FALSE;
		self->priv->double_click_timeout_id = (guint) 0;
		files_abstract_directory_view_set_is_frozen ((FilesAbstractDirectoryView*) self, FALSE);
		_tmp1_ = ((FilesAbstractDirectoryView*) self)->source_drag_file_list;
		if (_tmp1_ == NULL) {
			GList* _tmp2_;
			_tmp2_ = files_abstract_directory_view_get_selected_files ((FilesAbstractDirectoryView*) self);
			_tmp0_ = files_abstract_directory_view_selection_only_contains_folders ((FilesAbstractDirectoryView*) self, _tmp2_);
		} else {
			_tmp0_ = FALSE;
		}
		if (_tmp0_) {
			GList* _tmp3_;
			_tmp3_ = files_abstract_directory_view_get_selected_files (self);
			files_abstract_directory_view_activate_selected_items ((FilesAbstractDirectoryView*) self, FILES_OPEN_FLAG_DEFAULT, _tmp3_);
		}
	}
	result = FALSE;
	return result;
}

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

static GSettings*
files_column_view_real_get_view_settings (FilesAbstractDirectoryView* base)
{
	FilesColumnView * self;
	GSettings* _tmp0_;
	GSettings* _tmp1_;
	GSettings* result;
	self = (FilesColumnView*) base;
	_tmp0_ = files_column_view_settings;
	_tmp1_ = _g_object_ref0 (_tmp0_);
	result = _tmp1_;
	return result;
}

static GtkWidget*
files_column_view_real_create_view (FilesAbstractDirectoryView* base)
{
	FilesColumnView * self;
	FilesListModel* _tmp0_;
	GtkWidget* _tmp1_;
	GtkWidget* _tmp2_;
	FilesTreeView* _tmp3_;
	FilesTreeView* _tmp4_;
	GtkWidget* _tmp5_;
	GtkWidget* result;
	self = (FilesColumnView*) base;
	_tmp0_ = ((FilesAbstractDirectoryView*) self)->model;
	files_list_model_set_has_child (_tmp0_, FALSE);
	_tmp1_ = FILES_ABSTRACT_DIRECTORY_VIEW_CLASS (files_column_view_parent_class)->create_view ((FilesAbstractDirectoryView*) G_TYPE_CHECK_INSTANCE_CAST (self, FILES_TYPE_ABSTRACT_TREE_VIEW, FilesAbstractTreeView));
	_tmp2_ = _tmp1_;
	_g_object_unref0 (_tmp2_);
	_tmp3_ = ((FilesAbstractTreeView*) self)->tree;
	gtk_tree_view_set_show_expanders ((GtkTreeView*) _tmp3_, FALSE);
	_tmp4_ = ((FilesAbstractTreeView*) self)->tree;
	_tmp5_ = _g_object_ref0 (G_TYPE_CHECK_INSTANCE_TYPE (_tmp4_, gtk_widget_get_type ()) ? ((GtkWidget*) _tmp4_) : NULL);
	result = _tmp5_;
	return result;
}

static void
_vala_GtkTreeIter_free (GtkTreeIter* self)
{
	g_boxed_free (gtk_tree_iter_get_type (), self);
}

static GtkTreeIter*
_vala_GtkTreeIter_copy (GtkTreeIter* self)
{
	return g_boxed_copy (gtk_tree_iter_get_type (), self);
}

static gpointer
__vala_GtkTreeIter_copy0 (gpointer self)
{
	return self ? _vala_GtkTreeIter_copy (self) : NULL;
}

static gboolean
_____lambda83_ (FilesColumnView* self)
{
	gboolean result;
	files_column_view_not_double_click (self);
	result = G_SOURCE_REMOVE;
	return result;
}

static gboolean
______lambda83__gsource_func (gpointer self)
{
	gboolean result;
	result = _____lambda83_ ((FilesColumnView*) self);
	return result;
}

static gboolean
____lambda84_ (FilesColumnView* self)
{
	gboolean result;
	files_column_view_not_double_click (self);
	result = G_SOURCE_REMOVE;
	return result;
}

static gboolean
_____lambda84__gsource_func (gpointer self)
{
	gboolean result;
	result = ____lambda84_ ((FilesColumnView*) self);
	return result;
}

static gboolean
files_column_view_real_handle_primary_button_click (FilesAbstractDirectoryView* base,
                                                    guint n_press,
                                                    GdkModifierType mods,
                                                    GtkTreePath* path)
{
	FilesColumnView * self;
	FilesFile* file = NULL;
	FilesFile* selected_folder = NULL;
	GtkTreeIter* iter = NULL;
	GtkTreeIter* _tmp4_;
	FilesFile* _tmp9_;
	FilesFile* _tmp10_;
	FilesFile* _tmp21_;
	FilesFile* _tmp22_;
	gboolean _result_ = FALSE;
	gboolean result;
	self = (FilesColumnView*) base;
	file = NULL;
	selected_folder = NULL;
	iter = NULL;
	if (path != NULL) {
		FilesListModel* _tmp0_;
		GtkTreeIter _tmp1_ = {0};
		GtkTreeIter _tmp2_;
		GtkTreeIter* _tmp3_;
		_tmp0_ = ((FilesAbstractDirectoryView*) self)->model;
		gtk_tree_model_get_iter ((GtkTreeModel*) _tmp0_, &_tmp1_, path);
		__vala_GtkTreeIter_free0 (iter);
		_tmp2_ = _tmp1_;
		_tmp3_ = __vala_GtkTreeIter_copy0 (&_tmp2_);
		iter = _tmp3_;
	}
	_tmp4_ = iter;
	if (_tmp4_ != NULL) {
		FilesListModel* _tmp5_;
		GtkTreeIter* _tmp6_;
		GtkTreeIter _tmp7_;
		FilesFile* _tmp8_ = NULL;
		_tmp5_ = ((FilesAbstractDirectoryView*) self)->model;
		_tmp6_ = iter;
		_tmp7_ = *_tmp6_;
		gtk_tree_model_get ((GtkTreeModel*) _tmp5_, &_tmp7_, FILES_LIST_MODEL_COLUMN_ID_FILE_COLUMN, &_tmp8_, -1, -1);
		_g_object_unref0 (file);
		file = _tmp8_;
	}
	_tmp9_ = file;
	if (_tmp9_ == NULL) {
		result = FILES_ABSTRACT_DIRECTORY_VIEW_CLASS (files_column_view_parent_class)->handle_primary_button_click ((FilesAbstractDirectoryView*) G_TYPE_CHECK_INSTANCE_CAST (self, FILES_TYPE_ABSTRACT_TREE_VIEW, FilesAbstractTreeView), n_press, mods, path);
		__vala_GtkTreeIter_free0 (iter);
		_g_object_unref0 (selected_folder);
		_g_object_unref0 (file);
		return result;
	}
	_tmp10_ = file;
	if (!files_file_is_folder (_tmp10_)) {
		gboolean _result_ = FALSE;
		FilesPreferences* prefs = NULL;
		FilesPreferences* _tmp11_;
		_result_ = FALSE;
		_tmp11_ = files_preferences_get_default ();
		prefs = _tmp11_;
		if (n_press == ((guint) 1)) {
			if (self->priv->awaiting_double_click) {
				_result_ = TRUE;
			} else {
				self->priv->awaiting_double_click = TRUE;
				self->priv->double_click_timeout_id = g_timeout_add_full (G_PRIORITY_DEFAULT, (guint) 300, ______lambda83__gsource_func, g_object_ref (self), g_object_unref);
			}
		} else {
			if (n_press == ((guint) 2)) {
				FilesPreferences* _tmp12_;
				gboolean _tmp13_;
				gboolean _tmp14_;
				files_column_view_cancel_await_double_click (self);
				_tmp12_ = prefs;
				_tmp13_ = files_preferences_get_show_file_preview (_tmp12_);
				_tmp14_ = _tmp13_;
				if (_tmp14_) {
					FilesViewMiller* slot = NULL;
					FilesViewSlot* _tmp15_;
					FilesViewViewContainer* _tmp16_;
					FilesViewViewContainer* _tmp17_;
					FilesAbstractSlot* _tmp18_;
					FilesViewMiller* _tmp19_;
					FilesViewMiller* _tmp20_;
					_tmp15_ = ((FilesAbstractDirectoryView*) G_TYPE_CHECK_INSTANCE_CAST (self, FILES_TYPE_ABSTRACT_TREE_VIEW, FilesAbstractTreeView))->slot;
					_tmp16_ = files_view_slot_get_ctab (_tmp15_);
					_tmp17_ = _tmp16_;
					_tmp18_ = files_view_view_container_get_view (_tmp17_);
					_tmp19_ = _g_object_ref0 (G_TYPE_CHECK_INSTANCE_CAST (_tmp18_, FILES_VIEW_TYPE_MILLER, FilesViewMiller));
					slot = _tmp19_;
					_tmp20_ = slot;
					files_view_miller_clear_file_details (_tmp20_);
					_g_object_unref0 (slot);
				}
				result = FILES_ABSTRACT_DIRECTORY_VIEW_CLASS (files_column_view_parent_class)->handle_primary_button_click ((FilesAbstractDirectoryView*) G_TYPE_CHECK_INSTANCE_CAST (self, FILES_TYPE_ABSTRACT_TREE_VIEW, FilesAbstractTreeView), n_press, mods, path);
				_g_object_unref0 (prefs);
				__vala_GtkTreeIter_free0 (iter);
				_g_object_unref0 (selected_folder);
				_g_object_unref0 (file);
				return result;
			}
		}
		result = _result_;
		_g_object_unref0 (prefs);
		__vala_GtkTreeIter_free0 (iter);
		_g_object_unref0 (selected_folder);
		_g_object_unref0 (file);
		return result;
	}
	_tmp21_ = file;
	_tmp22_ = _g_object_ref0 (_tmp21_);
	_g_object_unref0 (selected_folder);
	selected_folder = _tmp22_;
	_result_ = FALSE;
	if (n_press == ((guint) 1)) {
		if (self->priv->awaiting_double_click) {
			_result_ = TRUE;
		} else {
			self->priv->awaiting_double_click = TRUE;
			files_abstract_directory_view_set_is_frozen ((FilesAbstractDirectoryView*) self, TRUE);
			self->priv->double_click_timeout_id = g_timeout_add_full (G_PRIORITY_DEFAULT, (guint) 300, _____lambda84__gsource_func, g_object_ref (self), g_object_unref);
		}
	} else {
		if (n_press == ((guint) 2)) {
			FilesFile* _tmp23_;
			((FilesAbstractDirectoryView*) self)->should_activate = FALSE;
			files_column_view_cancel_await_double_click (self);
			_tmp23_ = selected_folder;
			if (_tmp23_ != NULL) {
				FilesFile* _tmp24_;
				GFile* _tmp25_;
				_tmp24_ = selected_folder;
				_tmp25_ = files_file_get_target_location (_tmp24_);
				files_abstract_directory_view_load_root_location ((FilesAbstractDirectoryView*) self, _tmp25_);
			}
			_result_ = TRUE;
		}
	}
	result = _result_;
	__vala_GtkTreeIter_free0 (iter);
	_g_object_unref0 (selected_folder);
	_g_object_unref0 (file);
	return result;
}

static gboolean
files_column_view_real_handle_default_button_click (FilesAbstractDirectoryView* base)
{
	FilesColumnView * self;
	gboolean result;
	self = (FilesColumnView*) base;
	files_column_view_cancel_await_double_click (self);
	result = FILES_ABSTRACT_DIRECTORY_VIEW_CLASS (files_column_view_parent_class)->handle_default_button_click ((FilesAbstractDirectoryView*) G_TYPE_CHECK_INSTANCE_CAST (self, FILES_TYPE_ABSTRACT_TREE_VIEW, FilesAbstractTreeView));
	return result;
}

static void
files_column_view_real_cancel (FilesAbstractDirectoryView* base)
{
	FilesColumnView * self;
	self = (FilesColumnView*) base;
	FILES_ABSTRACT_DIRECTORY_VIEW_CLASS (files_column_view_parent_class)->cancel ((FilesAbstractDirectoryView*) G_TYPE_CHECK_INSTANCE_CAST (self, FILES_TYPE_ABSTRACT_TREE_VIEW, FilesAbstractTreeView));
	files_column_view_cancel_await_double_click (self);
}

static void
files_column_view_class_init (FilesColumnViewClass * klass,
                              gpointer klass_data)
{
	files_column_view_parent_class = g_type_class_peek_parent (klass);
	g_type_class_adjust_private_offset (klass, &FilesColumnView_private_offset);
	((FilesAbstractTreeViewClass *) klass)->set_up_icon_renderer = (void (*) (FilesAbstractTreeView*)) files_column_view_real_set_up_icon_renderer;
	((FilesAbstractDirectoryViewClass *) klass)->get_view_settings = (GSettings* (*) (FilesAbstractDirectoryView*)) files_column_view_real_get_view_settings;
	((FilesAbstractDirectoryViewClass *) klass)->create_view = (GtkWidget* (*) (FilesAbstractDirectoryView*)) files_column_view_real_create_view;
	((FilesAbstractDirectoryViewClass *) klass)->handle_primary_button_click = (gboolean (*) (FilesAbstractDirectoryView*, guint, GdkModifierType, GtkTreePath*)) files_column_view_real_handle_primary_button_click;
	((FilesAbstractDirectoryViewClass *) klass)->handle_default_button_click = (gboolean (*) (FilesAbstractDirectoryView*)) files_column_view_real_handle_default_button_click;
	((FilesAbstractDirectoryViewClass *) klass)->cancel = (void (*) (FilesAbstractDirectoryView*)) files_column_view_real_cancel;
	G_OBJECT_CLASS (klass)->finalize = files_column_view_finalize;
}

static void
files_column_view_instance_init (FilesColumnView * self,
                                 gpointer klass)
{
	self->priv = files_column_view_get_instance_private (self);
	self->priv->awaiting_double_click = FALSE;
	self->priv->double_click_timeout_id = (guint) 0;
}

static void
files_column_view_finalize (GObject * obj)
{
	FilesColumnView * self;
	self = G_TYPE_CHECK_INSTANCE_CAST (obj, FILES_TYPE_COLUMN_VIEW, FilesColumnView);
	G_OBJECT_CLASS (files_column_view_parent_class)->finalize (obj);
}

 G_GNUC_NO_INLINE static GType
files_column_view_get_type_once (void)
{
	static const GTypeInfo g_define_type_info = { sizeof (FilesColumnViewClass), (GBaseInitFunc) NULL, (GBaseFinalizeFunc) NULL, (GClassInitFunc) files_column_view_class_init, (GClassFinalizeFunc) NULL, NULL, sizeof (FilesColumnView), 0, (GInstanceInitFunc) files_column_view_instance_init, NULL };
	GType files_column_view_type_id;
	files_column_view_type_id = g_type_register_static (FILES_TYPE_ABSTRACT_TREE_VIEW, "FilesColumnView", &g_define_type_info, 0);
	FilesColumnView_private_offset = g_type_add_instance_private (files_column_view_type_id, sizeof (FilesColumnViewPrivate));
	return files_column_view_type_id;
}

GType
files_column_view_get_type (void)
{
	static volatile gsize files_column_view_type_id__once = 0;
	if (g_once_init_enter (&files_column_view_type_id__once)) {
		GType files_column_view_type_id;
		files_column_view_type_id = files_column_view_get_type_once ();
		g_once_init_leave (&files_column_view_type_id__once, files_column_view_type_id);
	}
	return files_column_view_type_id__once;
}

