/* icon-view.c generated by valac 0.39.5, the Vala compiler
 * generated from icon-view.vala, do not modify */

/* This file is part of GNOME Boxes. License: LGPLv2+*/

#include <glib.h>
#include <glib-object.h>
#include <gtk/gtk.h>
#include <libcommon.h>
#include <gio/gio.h>
#include <gdk/gdk.h>
#include <glib/gi18n-lib.h>
#include <stdlib.h>
#include <string.h>


#define BOXES_TYPE_SELECTION_CRITERIA (boxes_selection_criteria_get_type ())

#define BOXES_TYPE_ICOLLECTION_VIEW (boxes_icollection_view_get_type ())
#define BOXES_ICOLLECTION_VIEW(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), BOXES_TYPE_ICOLLECTION_VIEW, BoxesICollectionView))
#define BOXES_IS_ICOLLECTION_VIEW(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), BOXES_TYPE_ICOLLECTION_VIEW))
#define BOXES_ICOLLECTION_VIEW_GET_INTERFACE(obj) (G_TYPE_INSTANCE_GET_INTERFACE ((obj), BOXES_TYPE_ICOLLECTION_VIEW, BoxesICollectionViewIface))

typedef struct _BoxesICollectionView BoxesICollectionView;
typedef struct _BoxesICollectionViewIface BoxesICollectionViewIface;

#define BOXES_TYPE_COLLECTION_ITEM (boxes_collection_item_get_type ())
#define BOXES_COLLECTION_ITEM(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), BOXES_TYPE_COLLECTION_ITEM, BoxesCollectionItem))
#define BOXES_COLLECTION_ITEM_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), BOXES_TYPE_COLLECTION_ITEM, BoxesCollectionItemClass))
#define BOXES_IS_COLLECTION_ITEM(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), BOXES_TYPE_COLLECTION_ITEM))
#define BOXES_IS_COLLECTION_ITEM_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), BOXES_TYPE_COLLECTION_ITEM))
#define BOXES_COLLECTION_ITEM_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), BOXES_TYPE_COLLECTION_ITEM, BoxesCollectionItemClass))

typedef struct _BoxesCollectionItem BoxesCollectionItem;
typedef struct _BoxesCollectionItemClass BoxesCollectionItemClass;

#define BOXES_TYPE_COLLECTION_FILTER (boxes_collection_filter_get_type ())
#define BOXES_COLLECTION_FILTER(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), BOXES_TYPE_COLLECTION_FILTER, BoxesCollectionFilter))
#define BOXES_COLLECTION_FILTER_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), BOXES_TYPE_COLLECTION_FILTER, BoxesCollectionFilterClass))
#define BOXES_IS_COLLECTION_FILTER(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), BOXES_TYPE_COLLECTION_FILTER))
#define BOXES_IS_COLLECTION_FILTER_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), BOXES_TYPE_COLLECTION_FILTER))
#define BOXES_COLLECTION_FILTER_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), BOXES_TYPE_COLLECTION_FILTER, BoxesCollectionFilterClass))

typedef struct _BoxesCollectionFilter BoxesCollectionFilter;
typedef struct _BoxesCollectionFilterClass BoxesCollectionFilterClass;

#define BOXES_TYPE_UI (boxes_ui_get_type ())
#define BOXES_UI(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), BOXES_TYPE_UI, BoxesUI))
#define BOXES_IS_UI(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), BOXES_TYPE_UI))
#define BOXES_UI_GET_INTERFACE(obj) (G_TYPE_INSTANCE_GET_INTERFACE ((obj), BOXES_TYPE_UI, BoxesUIIface))

typedef struct _BoxesUI BoxesUI;
typedef struct _BoxesUIIface BoxesUIIface;

#define BOXES_TYPE_UI_STATE (boxes_ui_state_get_type ())

#define BOXES_TYPE_ICON_VIEW (boxes_icon_view_get_type ())
#define BOXES_ICON_VIEW(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), BOXES_TYPE_ICON_VIEW, BoxesIconView))
#define BOXES_ICON_VIEW_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), BOXES_TYPE_ICON_VIEW, BoxesIconViewClass))
#define BOXES_IS_ICON_VIEW(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), BOXES_TYPE_ICON_VIEW))
#define BOXES_IS_ICON_VIEW_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), BOXES_TYPE_ICON_VIEW))
#define BOXES_ICON_VIEW_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), BOXES_TYPE_ICON_VIEW, BoxesIconViewClass))

typedef struct _BoxesIconView BoxesIconView;
typedef struct _BoxesIconViewClass BoxesIconViewClass;
typedef struct _BoxesIconViewPrivate BoxesIconViewPrivate;

#define BOXES_TYPE_APP_WINDOW (boxes_app_window_get_type ())
#define BOXES_APP_WINDOW(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), BOXES_TYPE_APP_WINDOW, BoxesAppWindow))
#define BOXES_APP_WINDOW_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), BOXES_TYPE_APP_WINDOW, BoxesAppWindowClass))
#define BOXES_IS_APP_WINDOW(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), BOXES_TYPE_APP_WINDOW))
#define BOXES_IS_APP_WINDOW_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), BOXES_TYPE_APP_WINDOW))
#define BOXES_APP_WINDOW_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), BOXES_TYPE_APP_WINDOW, BoxesAppWindowClass))

typedef struct _BoxesAppWindow BoxesAppWindow;
typedef struct _BoxesAppWindowClass BoxesAppWindowClass;

#define BOXES_TYPE_ACTIONS_POPOVER (boxes_actions_popover_get_type ())
#define BOXES_ACTIONS_POPOVER(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), BOXES_TYPE_ACTIONS_POPOVER, BoxesActionsPopover))
#define BOXES_ACTIONS_POPOVER_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), BOXES_TYPE_ACTIONS_POPOVER, BoxesActionsPopoverClass))
#define BOXES_IS_ACTIONS_POPOVER(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), BOXES_TYPE_ACTIONS_POPOVER))
#define BOXES_IS_ACTIONS_POPOVER_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), BOXES_TYPE_ACTIONS_POPOVER))
#define BOXES_ACTIONS_POPOVER_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), BOXES_TYPE_ACTIONS_POPOVER, BoxesActionsPopoverClass))

typedef struct _BoxesActionsPopover BoxesActionsPopover;
typedef struct _BoxesActionsPopoverClass BoxesActionsPopoverClass;

#define BOXES_TYPE_CATEGORY (boxes_category_get_type ())
#define BOXES_CATEGORY(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), BOXES_TYPE_CATEGORY, BoxesCategory))
#define BOXES_CATEGORY_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), BOXES_TYPE_CATEGORY, BoxesCategoryClass))
#define BOXES_IS_CATEGORY(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), BOXES_TYPE_CATEGORY))
#define BOXES_IS_CATEGORY_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), BOXES_TYPE_CATEGORY))
#define BOXES_CATEGORY_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), BOXES_TYPE_CATEGORY, BoxesCategoryClass))

typedef struct _BoxesCategory BoxesCategory;
typedef struct _BoxesCategoryClass BoxesCategoryClass;
enum  {
	BOXES_ICON_VIEW_0_PROPERTY,
	BOXES_ICON_VIEW_PREVIOUS_UI_STATE_PROPERTY,
	BOXES_ICON_VIEW_UI_STATE_PROPERTY,
	BOXES_ICON_VIEW_FILTER_PROPERTY,
	BOXES_ICON_VIEW_CATEGORY_PROPERTY,
	BOXES_ICON_VIEW_NUM_PROPERTIES
};
static GParamSpec* boxes_icon_view_properties[BOXES_ICON_VIEW_NUM_PROPERTIES];
#define _g_object_unref0(var) ((var == NULL) ? NULL : (var = (g_object_unref (var), NULL)))
typedef struct _Block27Data Block27Data;

#define BOXES_TYPE_MACHINE (boxes_machine_get_type ())
#define BOXES_MACHINE(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), BOXES_TYPE_MACHINE, BoxesMachine))
#define BOXES_MACHINE_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), BOXES_TYPE_MACHINE, BoxesMachineClass))
#define BOXES_IS_MACHINE(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), BOXES_TYPE_MACHINE))
#define BOXES_IS_MACHINE_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), BOXES_TYPE_MACHINE))
#define BOXES_MACHINE_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), BOXES_TYPE_MACHINE, BoxesMachineClass))

typedef struct _BoxesMachine BoxesMachine;
typedef struct _BoxesMachineClass BoxesMachineClass;

#define BOXES_TYPE_APP (boxes_app_get_type ())
#define BOXES_APP(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), BOXES_TYPE_APP, BoxesApp))
#define BOXES_APP_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), BOXES_TYPE_APP, BoxesAppClass))
#define BOXES_IS_APP(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), BOXES_TYPE_APP))
#define BOXES_IS_APP_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), BOXES_TYPE_APP))
#define BOXES_APP_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), BOXES_TYPE_APP, BoxesAppClass))

typedef struct _BoxesApp BoxesApp;
typedef struct _BoxesAppClass BoxesAppClass;
#define _g_list_free0(var) ((var == NULL) ? NULL : (var = (g_list_free (var), NULL)))
#define __g_list_free__g_object_unref0_0(var) ((var == NULL) ? NULL : (var = (_g_list_free__g_object_unref0_ (var), NULL)))
typedef struct _Block28Data Block28Data;
typedef struct _BoxesAppPrivate BoxesAppPrivate;

#define BOXES_TYPE_COLLECTION (boxes_collection_get_type ())
#define BOXES_COLLECTION(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), BOXES_TYPE_COLLECTION, BoxesCollection))
#define BOXES_COLLECTION_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), BOXES_TYPE_COLLECTION, BoxesCollectionClass))
#define BOXES_IS_COLLECTION(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), BOXES_TYPE_COLLECTION))
#define BOXES_IS_COLLECTION_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), BOXES_TYPE_COLLECTION))
#define BOXES_COLLECTION_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), BOXES_TYPE_COLLECTION, BoxesCollectionClass))

typedef struct _BoxesCollection BoxesCollection;
typedef struct _BoxesCollectionClass BoxesCollectionClass;
typedef struct _BoxesCollectionPrivate BoxesCollectionPrivate;
typedef struct _Block29Data Block29Data;

#define BOXES_TYPE_ICON_VIEW_CHILD (boxes_icon_view_child_get_type ())
#define BOXES_ICON_VIEW_CHILD(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), BOXES_TYPE_ICON_VIEW_CHILD, BoxesIconViewChild))
#define BOXES_ICON_VIEW_CHILD_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), BOXES_TYPE_ICON_VIEW_CHILD, BoxesIconViewChildClass))
#define BOXES_IS_ICON_VIEW_CHILD(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), BOXES_TYPE_ICON_VIEW_CHILD))
#define BOXES_IS_ICON_VIEW_CHILD_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), BOXES_TYPE_ICON_VIEW_CHILD))
#define BOXES_ICON_VIEW_CHILD_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), BOXES_TYPE_ICON_VIEW_CHILD, BoxesIconViewChildClass))

typedef struct _BoxesIconViewChild BoxesIconViewChild;
typedef struct _BoxesIconViewChildClass BoxesIconViewChildClass;
typedef struct _Block30Data Block30Data;

#define BOXES_TYPE_LIBVIRT_MACHINE (boxes_libvirt_machine_get_type ())
#define BOXES_LIBVIRT_MACHINE(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), BOXES_TYPE_LIBVIRT_MACHINE, BoxesLibvirtMachine))
#define BOXES_LIBVIRT_MACHINE_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), BOXES_TYPE_LIBVIRT_MACHINE, BoxesLibvirtMachineClass))
#define BOXES_IS_LIBVIRT_MACHINE(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), BOXES_TYPE_LIBVIRT_MACHINE))
#define BOXES_IS_LIBVIRT_MACHINE_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), BOXES_TYPE_LIBVIRT_MACHINE))
#define BOXES_LIBVIRT_MACHINE_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), BOXES_TYPE_LIBVIRT_MACHINE, BoxesLibvirtMachineClass))

typedef struct _BoxesLibvirtMachine BoxesLibvirtMachine;
typedef struct _BoxesLibvirtMachineClass BoxesLibvirtMachineClass;
typedef struct _BoxesIconViewChildPrivate BoxesIconViewChildPrivate;

#define BOXES_CATEGORY_TYPE_KIND (boxes_category_kind_get_type ())

typedef enum  {
	BOXES_SELECTION_CRITERIA_ALL,
	BOXES_SELECTION_CRITERIA_NONE,
	BOXES_SELECTION_CRITERIA_RUNNING
} BoxesSelectionCriteria;

struct _BoxesICollectionViewIface {
	GTypeInterface parent_iface;
	GList* (*get_selected_items) (BoxesICollectionView* self);
	void (*activate_first_item) (BoxesICollectionView* self);
	void (*select_by_criteria) (BoxesICollectionView* self, BoxesSelectionCriteria criteria);
	void (*select_all) (BoxesICollectionView* self);
	void (*unselect_all) (BoxesICollectionView* self);
	BoxesCollectionFilter* (*get_filter) (BoxesICollectionView* self);
	void (*set_filter) (BoxesICollectionView* self, BoxesCollectionFilter* value);
};

typedef enum  {
	BOXES_UI_STATE_NONE,
	BOXES_UI_STATE_COLLECTION,
	BOXES_UI_STATE_CREDS,
	BOXES_UI_STATE_DISPLAY,
	BOXES_UI_STATE_WIZARD,
	BOXES_UI_STATE_PROPERTIES,
	BOXES_UI_STATE_TROUBLESHOOT
} BoxesUIState;

struct _BoxesUIIface {
	GTypeInterface parent_iface;
	BoxesUIState (*get_previous_ui_state) (BoxesUI* self);
	void (*set_previous_ui_state) (BoxesUI* self, BoxesUIState value);
	BoxesUIState (*get_ui_state) (BoxesUI* self);
	void (*set_ui_state) (BoxesUI* self, BoxesUIState value);
};

struct _BoxesIconView {
	GtkScrolledWindow parent_instance;
	BoxesIconViewPrivate * priv;
};

struct _BoxesIconViewClass {
	GtkScrolledWindowClass parent_class;
};

struct _BoxesIconViewPrivate {
	BoxesUIState _previous_ui_state;
	BoxesUIState _ui_state;
	BoxesCollectionFilter* _filter;
	GtkFlowBox* flowbox;
	BoxesAppWindow* window;
	BoxesActionsPopover* context_popover;
	BoxesCategory* _category;
};

struct _Block27Data {
	int _ref_count_;
	BoxesIconView* self;
	BoxesAppWindow* window;
};

struct _Block28Data {
	int _ref_count_;
	BoxesIconView* self;
	GtkFlowBoxChild* first_child;
};

struct _BoxesApp {
	GtkApplication parent_instance;
	BoxesAppPrivate * priv;
	BoxesCollection* collection;
	BoxesAsyncLauncher* async_launcher;
};

struct _BoxesAppClass {
	GtkApplicationClass parent_class;
};

struct _BoxesCollection {
	GObject parent_instance;
	BoxesCollectionPrivate * priv;
	GListStore* items;
};

struct _BoxesCollectionClass {
	GObjectClass parent_class;
};

struct _Block29Data {
	int _ref_count_;
	BoxesIconView* self;
	GtkFlowBoxChild* child;
};

struct _Block30Data {
	int _ref_count_;
	BoxesIconView* self;
	GFunc func;
	gpointer func_target;
};

struct _BoxesIconViewChild {
	GtkBox parent_instance;
	BoxesIconViewChildPrivate * priv;
	gboolean _selection_mode;
	gboolean _selected;
	GtkImage* thumbnail;
};

struct _BoxesIconViewChildClass {
	GtkBoxClass parent_class;
};

typedef enum  {
	BOXES_CATEGORY_KIND_USER,
	BOXES_CATEGORY_KIND_NEW,
	BOXES_CATEGORY_KIND_FAVORITES,
	BOXES_CATEGORY_KIND_PRIVATE,
	BOXES_CATEGORY_KIND_SHARED
} BoxesCategoryKind;


static gpointer boxes_icon_view_parent_class = NULL;
extern BoxesApp* boxes_app_app;
static BoxesICollectionViewIface * boxes_icon_view_boxes_icollection_view_parent_iface = NULL;
static BoxesUIIface * boxes_icon_view_boxes_ui_parent_iface = NULL;

GType boxes_selection_criteria_get_type (void) G_GNUC_CONST;
GType boxes_collection_item_get_type (void) G_GNUC_CONST;
GType boxes_collection_filter_get_type (void) G_GNUC_CONST;
GType boxes_icollection_view_get_type (void) G_GNUC_CONST;
GType boxes_ui_state_get_type (void) G_GNUC_CONST;
GType boxes_ui_get_type (void) G_GNUC_CONST;
GType boxes_icon_view_get_type (void) G_GNUC_CONST;
GType boxes_app_window_get_type (void) G_GNUC_CONST;
GType boxes_actions_popover_get_type (void) G_GNUC_CONST;
GType boxes_category_get_type (void) G_GNUC_CONST;
#define BOXES_ICON_VIEW_GET_PRIVATE(o) (G_TYPE_INSTANCE_GET_PRIVATE ((o), BOXES_TYPE_ICON_VIEW, BoxesIconViewPrivate))
void boxes_icon_view_setup_ui (BoxesIconView* self,
                               BoxesAppWindow* window);
static Block27Data* block27_data_ref (Block27Data* _data27_);
static void block27_data_unref (void * _userdata_);
static void __lambda209_ (Block27Data* _data27_);
gboolean boxes_app_window_get_selection_mode (BoxesAppWindow* self);
static void boxes_icon_view_update_selection_mode (BoxesIconView* self);
static void ___lambda209__g_object_notify (GObject* _sender,
                                    GParamSpec* pspec,
                                    gpointer self);
BoxesActionsPopover* boxes_actions_popover_new (BoxesAppWindow* window);
BoxesActionsPopover* boxes_actions_popover_construct (GType object_type,
                                                      BoxesAppWindow* window);
static void boxes_icon_view_real_select_by_criteria (BoxesICollectionView* base,
                                              BoxesSelectionCriteria criteria);
void boxes_app_window_set_selection_mode (BoxesAppWindow* self,
                                          gboolean value);
static void boxes_icon_view_foreach_child (BoxesIconView* self,
                                    GFunc func,
                                    void* func_target);
static void ___lambda238_ (BoxesIconView* self,
                    GtkFlowBoxChild* box_child);
static void boxes_icon_view_select_child (BoxesIconView* self,
                                   GtkFlowBoxChild* child);
static void ____lambda238__gfunc (gconstpointer data,
                           gpointer self);
static void ___lambda239_ (BoxesIconView* self,
                    GtkFlowBoxChild* box_child);
static void boxes_icon_view_unselect_child (BoxesIconView* self,
                                     GtkFlowBoxChild* child);
static void ____lambda239__gfunc (gconstpointer data,
                           gpointer self);
static void ___lambda240_ (BoxesIconView* self,
                    GtkFlowBoxChild* box_child);
static BoxesCollectionItem* boxes_icon_view_get_item_for_child (BoxesIconView* self,
                                                         GtkFlowBoxChild* child);
GType boxes_machine_get_type (void) G_GNUC_CONST;
gboolean boxes_machine_get_is_running (BoxesMachine* self);
static void ____lambda240__gfunc (gconstpointer data,
                           gpointer self);
GType boxes_app_get_type (void) G_GNUC_CONST;
static GList* boxes_icon_view_real_get_selected_items (BoxesICollectionView* base);
static void _g_object_unref0_ (gpointer var);
static inline void _g_list_free__g_object_unref0_ (GList* self);
static void boxes_icon_view_real_activate_first_item (BoxesICollectionView* base);
static Block28Data* block28_data_ref (Block28Data* _data28_);
static void block28_data_unref (void * _userdata_);
static void __lambda241_ (Block28Data* _data28_,
                   GtkFlowBoxChild* box_child);
static void ___lambda241__gfunc (gconstpointer data,
                          gpointer self);
static void boxes_icon_view_setup_flowbox (BoxesIconView* self);
GType boxes_collection_get_type (void) G_GNUC_CONST;
static GtkWidget* __lambda242_ (BoxesIconView* self,
                         GObject* item);
static Block29Data* block29_data_ref (Block29Data* _data29_);
static void block29_data_unref (void * _userdata_);
GType boxes_icon_view_child_get_type (void) G_GNUC_CONST;
BoxesIconViewChild* boxes_icon_view_child_new (BoxesCollectionItem* item);
BoxesIconViewChild* boxes_icon_view_child_construct (GType object_type,
                                                     BoxesCollectionItem* item);
static void __lambda243_ (Block29Data* _data29_);
static void boxes_icon_view_propagate_view_child_selection (BoxesIconView* self,
                                                     GtkFlowBoxChild* child);
static void ___lambda243__g_object_notify (GObject* _sender,
                                    GParamSpec* pspec,
                                    gpointer self);
static GtkWidget* ___lambda242__gtk_flow_box_create_widget_func (GObject* item,
                                                          gpointer self);
static gboolean boxes_icon_view_model_filter (BoxesIconView* self,
                                       GtkFlowBoxChild* child);
static gboolean _boxes_icon_view_model_filter_gtk_flow_box_filter_func (GtkFlowBoxChild* child,
                                                                 gpointer self);
BoxesCollectionItem* boxes_icon_view_child_get_item (BoxesIconViewChild* self);
static Block30Data* block30_data_ref (Block30Data* _data30_);
static void block30_data_unref (void * _userdata_);
static void __lambda210_ (Block30Data* _data30_,
                   GtkWidget* child);
static void ___lambda210__gtk_callback (GtkWidget* widget,
                                 gpointer self);
BoxesCollectionFilter* boxes_icollection_view_get_filter (BoxesICollectionView* self);
gboolean boxes_collection_filter_filter (BoxesCollectionFilter* self,
                                         BoxesCollectionItem* item);
static void boxes_icon_view_ui_state_changed (BoxesIconView* self);
BoxesUIState boxes_ui_get_ui_state (BoxesUI* self);
static void boxes_icon_view_on_child_activated (BoxesIconView* self,
                                         GtkFlowBoxChild* child);
GType boxes_libvirt_machine_get_type (void) G_GNUC_CONST;
gboolean boxes_libvirt_machine_get_importing (BoxesLibvirtMachine* self);
void boxes_app_window_select_item (BoxesAppWindow* self,
                                   BoxesCollectionItem* item);
static void _boxes_icon_view_on_child_activated_gtk_flow_box_child_activated (GtkFlowBox* _sender,
                                                                       GtkFlowBoxChild* child,
                                                                       gpointer self);
static gboolean boxes_icon_view_on_button_press_event (BoxesIconView* self,
                                                GdkEventButton* event);
static gboolean boxes_icon_view_launch_context_popover_for_child (BoxesIconView* self,
                                                           GtkFlowBoxChild* child);
static gboolean _boxes_icon_view_on_button_press_event_gtk_widget_button_release_event (GtkWidget* _sender,
                                                                                 GdkEventButton* event,
                                                                                 gpointer self);
static gboolean boxes_icon_view_on_key_press_event (BoxesIconView* self,
                                             GdkEventKey* event);
static gboolean _boxes_icon_view_on_key_press_event_gtk_widget_key_press_event (GtkWidget* _sender,
                                                                         GdkEventKey* event,
                                                                         gpointer self);
void boxes_actions_popover_update_for_item (BoxesActionsPopover* self,
                                            BoxesCollectionItem* item);
static void __lambda211_ (BoxesIconView* self,
                   GtkFlowBoxChild* child);
gboolean boxes_icon_view_child_get_selection_mode (BoxesIconViewChild* self);
void boxes_icon_view_child_set_selection_mode (BoxesIconViewChild* self,
                                               gboolean value);
static void ___lambda211__gfunc (gconstpointer data,
                          gpointer self);
gboolean boxes_icon_view_child_get_selected (BoxesIconViewChild* self);
void boxes_icon_view_child_set_selected (BoxesIconViewChild* self,
                                         gboolean value);
static void boxes_icon_view_real_unselect_all (BoxesICollectionView* base);
static void _boxes_icon_view_unselect_child_gfunc (gconstpointer data,
                                            gpointer self);
static void boxes_icon_view_real_select_all (BoxesICollectionView* base);
static void _boxes_icon_view_select_child_gfunc (gconstpointer data,
                                          gpointer self);
BoxesIconView* boxes_icon_view_new (void);
BoxesIconView* boxes_icon_view_construct (GType object_type);
BoxesCategory* boxes_icon_view_get_category (BoxesIconView* self);
void boxes_icon_view_set_category (BoxesIconView* self,
                                   BoxesCategory* value);
static GObject * boxes_icon_view_constructor (GType type,
                                       guint n_construct_properties,
                                       GObjectConstructParam * construct_properties);
GType boxes_category_kind_get_type (void) G_GNUC_CONST;
BoxesCategory* boxes_category_new (const gchar* name,
                                   BoxesCategoryKind kind);
BoxesCategory* boxes_category_construct (GType object_type,
                                         const gchar* name,
                                         BoxesCategoryKind kind);
BoxesCollectionFilter* boxes_collection_filter_new (void);
BoxesCollectionFilter* boxes_collection_filter_construct (GType object_type);
void boxes_icollection_view_set_filter (BoxesICollectionView* self,
                                        BoxesCollectionFilter* value);
static void _boxes_icon_view___lambda244_ (BoxesIconView* self);
static void __boxes_icon_view___lambda244__g_object_notify (GObject* _sender,
                                                     GParamSpec* pspec,
                                                     gpointer self);
static void _boxes_icon_view___lambda245_ (BoxesIconView* self);
static void __boxes_icon_view___lambda245__boxes_collection_filter_filter_func_changed (BoxesCollectionFilter* _sender,
                                                                                 gpointer self);
static void _boxes_icon_view_ui_state_changed_g_object_notify (GObject* _sender,
                                                        GParamSpec* pspec,
                                                        gpointer self);
static void boxes_icon_view_finalize (GObject * obj);
BoxesUIState boxes_ui_get_previous_ui_state (BoxesUI* self);
static void _vala_boxes_icon_view_get_property (GObject * object,
                                         guint property_id,
                                         GValue * value,
                                         GParamSpec * pspec);
void boxes_ui_set_previous_ui_state (BoxesUI* self,
                                     BoxesUIState value);
void boxes_ui_set_ui_state (BoxesUI* self,
                            BoxesUIState value);
static void _vala_boxes_icon_view_set_property (GObject * object,
                                         guint property_id,
                                         const GValue * value,
                                         GParamSpec * pspec);


GType
boxes_selection_criteria_get_type (void)
{
	static volatile gsize boxes_selection_criteria_type_id__volatile = 0;
	if (g_once_init_enter (&boxes_selection_criteria_type_id__volatile)) {
		static const GEnumValue values[] = {{BOXES_SELECTION_CRITERIA_ALL, "BOXES_SELECTION_CRITERIA_ALL", "all"}, {BOXES_SELECTION_CRITERIA_NONE, "BOXES_SELECTION_CRITERIA_NONE", "none"}, {BOXES_SELECTION_CRITERIA_RUNNING, "BOXES_SELECTION_CRITERIA_RUNNING", "running"}, {0, NULL, NULL}};
		GType boxes_selection_criteria_type_id;
		boxes_selection_criteria_type_id = g_enum_register_static ("BoxesSelectionCriteria", values);
		g_once_init_leave (&boxes_selection_criteria_type_id__volatile, boxes_selection_criteria_type_id);
	}
	return boxes_selection_criteria_type_id__volatile;
}


static gpointer
_g_object_ref0 (gpointer self)
{
#line 47 "/home/fborges/checkout/gnome-boxes/src/icon-view.vala"
	return self ? g_object_ref (self) : NULL;
#line 494 "icon-view.c"
}


static Block27Data*
block27_data_ref (Block27Data* _data27_)
{
#line 47 "/home/fborges/checkout/gnome-boxes/src/icon-view.vala"
	g_atomic_int_inc (&_data27_->_ref_count_);
#line 47 "/home/fborges/checkout/gnome-boxes/src/icon-view.vala"
	return _data27_;
#line 505 "icon-view.c"
}


static void
block27_data_unref (void * _userdata_)
{
	Block27Data* _data27_;
	_data27_ = (Block27Data*) _userdata_;
#line 47 "/home/fborges/checkout/gnome-boxes/src/icon-view.vala"
	if (g_atomic_int_dec_and_test (&_data27_->_ref_count_)) {
#line 516 "icon-view.c"
		BoxesIconView* self;
#line 47 "/home/fborges/checkout/gnome-boxes/src/icon-view.vala"
		self = _data27_->self;
#line 47 "/home/fborges/checkout/gnome-boxes/src/icon-view.vala"
		_g_object_unref0 (_data27_->window);
#line 47 "/home/fborges/checkout/gnome-boxes/src/icon-view.vala"
		_g_object_unref0 (self);
#line 47 "/home/fborges/checkout/gnome-boxes/src/icon-view.vala"
		g_slice_free (Block27Data, _data27_);
#line 526 "icon-view.c"
	}
}


static void
__lambda209_ (Block27Data* _data27_)
{
	BoxesIconView* self;
	GtkSelectionMode _tmp0_ = 0;
	gboolean _tmp1_;
	gboolean _tmp2_;
	GtkFlowBox* _tmp3_;
#line 50 "/home/fborges/checkout/gnome-boxes/src/icon-view.vala"
	self = _data27_->self;
#line 51 "/home/fborges/checkout/gnome-boxes/src/icon-view.vala"
	_tmp1_ = boxes_app_window_get_selection_mode (_data27_->window);
#line 51 "/home/fborges/checkout/gnome-boxes/src/icon-view.vala"
	_tmp2_ = _tmp1_;
#line 51 "/home/fborges/checkout/gnome-boxes/src/icon-view.vala"
	if (_tmp2_) {
#line 51 "/home/fborges/checkout/gnome-boxes/src/icon-view.vala"
		_tmp0_ = GTK_SELECTION_MULTIPLE;
#line 549 "icon-view.c"
	} else {
#line 52 "/home/fborges/checkout/gnome-boxes/src/icon-view.vala"
		_tmp0_ = GTK_SELECTION_NONE;
#line 553 "icon-view.c"
	}
#line 51 "/home/fborges/checkout/gnome-boxes/src/icon-view.vala"
	_tmp3_ = self->priv->flowbox;
#line 51 "/home/fborges/checkout/gnome-boxes/src/icon-view.vala"
	gtk_flow_box_set_selection_mode (_tmp3_, _tmp0_);
#line 53 "/home/fborges/checkout/gnome-boxes/src/icon-view.vala"
	boxes_icon_view_update_selection_mode (self);
#line 561 "icon-view.c"
}


static void
___lambda209__g_object_notify (GObject* _sender,
                               GParamSpec* pspec,
                               gpointer self)
{
#line 50 "/home/fborges/checkout/gnome-boxes/src/icon-view.vala"
	__lambda209_ (self);
#line 572 "icon-view.c"
}


void
boxes_icon_view_setup_ui (BoxesIconView* self,
                          BoxesAppWindow* window)
{
	Block27Data* _data27_;
	BoxesAppWindow* _tmp0_;
	BoxesAppWindow* _tmp1_;
	BoxesActionsPopover* _tmp2_;
#line 47 "/home/fborges/checkout/gnome-boxes/src/icon-view.vala"
	g_return_if_fail (self != NULL);
#line 47 "/home/fborges/checkout/gnome-boxes/src/icon-view.vala"
	g_return_if_fail (window != NULL);
#line 47 "/home/fborges/checkout/gnome-boxes/src/icon-view.vala"
	_data27_ = g_slice_new0 (Block27Data);
#line 47 "/home/fborges/checkout/gnome-boxes/src/icon-view.vala"
	_data27_->_ref_count_ = 1;
#line 47 "/home/fborges/checkout/gnome-boxes/src/icon-view.vala"
	_data27_->self = g_object_ref (self);
#line 47 "/home/fborges/checkout/gnome-boxes/src/icon-view.vala"
	_tmp0_ = _g_object_ref0 (window);
#line 47 "/home/fborges/checkout/gnome-boxes/src/icon-view.vala"
	_g_object_unref0 (_data27_->window);
#line 47 "/home/fborges/checkout/gnome-boxes/src/icon-view.vala"
	_data27_->window = _tmp0_;
#line 48 "/home/fborges/checkout/gnome-boxes/src/icon-view.vala"
	_tmp1_ = _g_object_ref0 (_data27_->window);
#line 48 "/home/fborges/checkout/gnome-boxes/src/icon-view.vala"
	_g_object_unref0 (self->priv->window);
#line 48 "/home/fborges/checkout/gnome-boxes/src/icon-view.vala"
	self->priv->window = _tmp1_;
#line 50 "/home/fborges/checkout/gnome-boxes/src/icon-view.vala"
	g_signal_connect_data ((GObject*) _data27_->window, "notify::selection-mode", (GCallback) ___lambda209__g_object_notify, block27_data_ref (_data27_), (GClosureNotify) block27_data_unref, 0);
#line 56 "/home/fborges/checkout/gnome-boxes/src/icon-view.vala"
	_tmp2_ = boxes_actions_popover_new (_data27_->window);
#line 56 "/home/fborges/checkout/gnome-boxes/src/icon-view.vala"
	g_object_ref_sink (_tmp2_);
#line 56 "/home/fborges/checkout/gnome-boxes/src/icon-view.vala"
	_g_object_unref0 (self->priv->context_popover);
#line 56 "/home/fborges/checkout/gnome-boxes/src/icon-view.vala"
	self->priv->context_popover = _tmp2_;
#line 47 "/home/fborges/checkout/gnome-boxes/src/icon-view.vala"
	block27_data_unref (_data27_);
#line 47 "/home/fborges/checkout/gnome-boxes/src/icon-view.vala"
	_data27_ = NULL;
#line 620 "icon-view.c"
}


static void
___lambda238_ (BoxesIconView* self,
               GtkFlowBoxChild* box_child)
{
#line 65 "/home/fborges/checkout/gnome-boxes/src/icon-view.vala"
	g_return_if_fail (box_child != NULL);
#line 65 "/home/fborges/checkout/gnome-boxes/src/icon-view.vala"
	boxes_icon_view_select_child (self, box_child);
#line 632 "icon-view.c"
}


static void
____lambda238__gfunc (gconstpointer data,
                      gpointer self)
{
#line 65 "/home/fborges/checkout/gnome-boxes/src/icon-view.vala"
	___lambda238_ ((BoxesIconView*) self, (GtkFlowBoxChild*) data);
#line 642 "icon-view.c"
}


static void
___lambda239_ (BoxesIconView* self,
               GtkFlowBoxChild* box_child)
{
#line 69 "/home/fborges/checkout/gnome-boxes/src/icon-view.vala"
	g_return_if_fail (box_child != NULL);
#line 69 "/home/fborges/checkout/gnome-boxes/src/icon-view.vala"
	boxes_icon_view_unselect_child (self, box_child);
#line 654 "icon-view.c"
}


static void
____lambda239__gfunc (gconstpointer data,
                      gpointer self)
{
#line 69 "/home/fborges/checkout/gnome-boxes/src/icon-view.vala"
	___lambda239_ ((BoxesIconView*) self, (GtkFlowBoxChild*) data);
#line 664 "icon-view.c"
}


static void
___lambda240_ (BoxesIconView* self,
               GtkFlowBoxChild* box_child)
{
	BoxesCollectionItem* item = NULL;
	BoxesCollectionItem* _tmp0_;
	gboolean _tmp1_ = FALSE;
	gboolean _tmp2_ = FALSE;
	BoxesCollectionItem* _tmp3_;
#line 73 "/home/fborges/checkout/gnome-boxes/src/icon-view.vala"
	g_return_if_fail (box_child != NULL);
#line 74 "/home/fborges/checkout/gnome-boxes/src/icon-view.vala"
	_tmp0_ = boxes_icon_view_get_item_for_child (self, box_child);
#line 74 "/home/fborges/checkout/gnome-boxes/src/icon-view.vala"
	item = _tmp0_;
#line 75 "/home/fborges/checkout/gnome-boxes/src/icon-view.vala"
	_tmp3_ = item;
#line 75 "/home/fborges/checkout/gnome-boxes/src/icon-view.vala"
	if (_tmp3_ != NULL) {
#line 687 "icon-view.c"
		BoxesCollectionItem* _tmp4_;
#line 75 "/home/fborges/checkout/gnome-boxes/src/icon-view.vala"
		_tmp4_ = item;
#line 75 "/home/fborges/checkout/gnome-boxes/src/icon-view.vala"
		_tmp2_ = G_TYPE_CHECK_INSTANCE_TYPE (_tmp4_, BOXES_TYPE_MACHINE);
#line 693 "icon-view.c"
	} else {
#line 75 "/home/fborges/checkout/gnome-boxes/src/icon-view.vala"
		_tmp2_ = FALSE;
#line 697 "icon-view.c"
	}
#line 75 "/home/fborges/checkout/gnome-boxes/src/icon-view.vala"
	if (_tmp2_) {
#line 701 "icon-view.c"
		BoxesCollectionItem* _tmp5_;
		gboolean _tmp6_;
		gboolean _tmp7_;
#line 75 "/home/fborges/checkout/gnome-boxes/src/icon-view.vala"
		_tmp5_ = item;
#line 75 "/home/fborges/checkout/gnome-boxes/src/icon-view.vala"
		_tmp6_ = boxes_machine_get_is_running (G_TYPE_CHECK_INSTANCE_TYPE (_tmp5_, BOXES_TYPE_MACHINE) ? ((BoxesMachine*) _tmp5_) : NULL);
#line 75 "/home/fborges/checkout/gnome-boxes/src/icon-view.vala"
		_tmp7_ = _tmp6_;
#line 75 "/home/fborges/checkout/gnome-boxes/src/icon-view.vala"
		_tmp1_ = _tmp7_;
#line 713 "icon-view.c"
	} else {
#line 75 "/home/fborges/checkout/gnome-boxes/src/icon-view.vala"
		_tmp1_ = FALSE;
#line 717 "icon-view.c"
	}
#line 75 "/home/fborges/checkout/gnome-boxes/src/icon-view.vala"
	if (_tmp1_) {
#line 76 "/home/fborges/checkout/gnome-boxes/src/icon-view.vala"
		boxes_icon_view_select_child (self, box_child);
#line 723 "icon-view.c"
	} else {
#line 78 "/home/fborges/checkout/gnome-boxes/src/icon-view.vala"
		boxes_icon_view_unselect_child (self, box_child);
#line 727 "icon-view.c"
	}
#line 73 "/home/fborges/checkout/gnome-boxes/src/icon-view.vala"
	_g_object_unref0 (item);
#line 731 "icon-view.c"
}


static void
____lambda240__gfunc (gconstpointer data,
                      gpointer self)
{
#line 73 "/home/fborges/checkout/gnome-boxes/src/icon-view.vala"
	___lambda240_ ((BoxesIconView*) self, (GtkFlowBoxChild*) data);
#line 741 "icon-view.c"
}


static void
boxes_icon_view_real_select_by_criteria (BoxesICollectionView* base,
                                         BoxesSelectionCriteria criteria)
{
	BoxesIconView * self;
	BoxesAppWindow* _tmp0_;
	BoxesApp* _tmp1_;
#line 59 "/home/fborges/checkout/gnome-boxes/src/icon-view.vala"
	self = (BoxesIconView*) base;
#line 60 "/home/fborges/checkout/gnome-boxes/src/icon-view.vala"
	_tmp0_ = self->priv->window;
#line 60 "/home/fborges/checkout/gnome-boxes/src/icon-view.vala"
	boxes_app_window_set_selection_mode (_tmp0_, TRUE);
#line 62 "/home/fborges/checkout/gnome-boxes/src/icon-view.vala"
	switch (criteria) {
#line 760 "icon-view.c"
		default:
#line 62 "/home/fborges/checkout/gnome-boxes/src/icon-view.vala"
		case BOXES_SELECTION_CRITERIA_ALL:
#line 764 "icon-view.c"
		{
#line 65 "/home/fborges/checkout/gnome-boxes/src/icon-view.vala"
			boxes_icon_view_foreach_child (self, ____lambda238__gfunc, self);
#line 67 "/home/fborges/checkout/gnome-boxes/src/icon-view.vala"
			break;
#line 770 "icon-view.c"
		}
#line 62 "/home/fborges/checkout/gnome-boxes/src/icon-view.vala"
		case BOXES_SELECTION_CRITERIA_NONE:
#line 774 "icon-view.c"
		{
#line 69 "/home/fborges/checkout/gnome-boxes/src/icon-view.vala"
			boxes_icon_view_foreach_child (self, ____lambda239__gfunc, self);
#line 71 "/home/fborges/checkout/gnome-boxes/src/icon-view.vala"
			break;
#line 780 "icon-view.c"
		}
#line 62 "/home/fborges/checkout/gnome-boxes/src/icon-view.vala"
		case BOXES_SELECTION_CRITERIA_RUNNING:
#line 784 "icon-view.c"
		{
#line 73 "/home/fborges/checkout/gnome-boxes/src/icon-view.vala"
			boxes_icon_view_foreach_child (self, ____lambda240__gfunc, self);
#line 81 "/home/fborges/checkout/gnome-boxes/src/icon-view.vala"
			break;
#line 790 "icon-view.c"
		}
	}
#line 84 "/home/fborges/checkout/gnome-boxes/src/icon-view.vala"
	_tmp1_ = boxes_app_app;
#line 84 "/home/fborges/checkout/gnome-boxes/src/icon-view.vala"
	g_object_notify ((GObject*) _tmp1_, "selected-items");
#line 797 "icon-view.c"
}


static void
_g_object_unref0_ (gpointer var)
{
#line 95 "/home/fborges/checkout/gnome-boxes/src/icon-view.vala"
	(var == NULL) ? NULL : (var = (g_object_unref (var), NULL));
#line 806 "icon-view.c"
}


static inline void
_g_list_free__g_object_unref0_ (GList* self)
{
#line 95 "/home/fborges/checkout/gnome-boxes/src/icon-view.vala"
	g_list_free_full (self, (GDestroyNotify) _g_object_unref0_);
#line 815 "icon-view.c"
}


static GList*
boxes_icon_view_real_get_selected_items (BoxesICollectionView* base)
{
	BoxesIconView * self;
	GList* result = NULL;
	GList* selected = NULL;
	GtkFlowBox* _tmp0_;
	GList* _tmp1_;
	GList* _tmp6_;
#line 87 "/home/fborges/checkout/gnome-boxes/src/icon-view.vala"
	self = (BoxesIconView*) base;
#line 88 "/home/fborges/checkout/gnome-boxes/src/icon-view.vala"
	selected = NULL;
#line 90 "/home/fborges/checkout/gnome-boxes/src/icon-view.vala"
	_tmp0_ = self->priv->flowbox;
#line 90 "/home/fborges/checkout/gnome-boxes/src/icon-view.vala"
	_tmp1_ = gtk_flow_box_get_selected_children (_tmp0_);
#line 836 "icon-view.c"
	{
		GList* box_child_collection = NULL;
		GList* box_child_it = NULL;
#line 90 "/home/fborges/checkout/gnome-boxes/src/icon-view.vala"
		box_child_collection = _tmp1_;
#line 90 "/home/fborges/checkout/gnome-boxes/src/icon-view.vala"
		for (box_child_it = box_child_collection; box_child_it != NULL; box_child_it = box_child_it->next) {
#line 844 "icon-view.c"
			GtkFlowBoxChild* box_child = NULL;
#line 90 "/home/fborges/checkout/gnome-boxes/src/icon-view.vala"
			box_child = (GtkFlowBoxChild*) box_child_it->data;
#line 848 "icon-view.c"
			{
				BoxesCollectionItem* item = NULL;
				GtkFlowBoxChild* _tmp2_;
				BoxesCollectionItem* _tmp3_;
				BoxesCollectionItem* _tmp4_;
				BoxesCollectionItem* _tmp5_;
#line 91 "/home/fborges/checkout/gnome-boxes/src/icon-view.vala"
				_tmp2_ = box_child;
#line 91 "/home/fborges/checkout/gnome-boxes/src/icon-view.vala"
				_tmp3_ = boxes_icon_view_get_item_for_child (self, _tmp2_);
#line 91 "/home/fborges/checkout/gnome-boxes/src/icon-view.vala"
				item = _tmp3_;
#line 92 "/home/fborges/checkout/gnome-boxes/src/icon-view.vala"
				_tmp4_ = item;
#line 92 "/home/fborges/checkout/gnome-boxes/src/icon-view.vala"
				_tmp5_ = _g_object_ref0 (_tmp4_);
#line 92 "/home/fborges/checkout/gnome-boxes/src/icon-view.vala"
				selected = g_list_append (selected, _tmp5_);
#line 90 "/home/fborges/checkout/gnome-boxes/src/icon-view.vala"
				_g_object_unref0 (item);
#line 869 "icon-view.c"
			}
		}
#line 90 "/home/fborges/checkout/gnome-boxes/src/icon-view.vala"
		_g_list_free0 (box_child_collection);
#line 874 "icon-view.c"
	}
#line 95 "/home/fborges/checkout/gnome-boxes/src/icon-view.vala"
	_tmp6_ = selected;
#line 95 "/home/fborges/checkout/gnome-boxes/src/icon-view.vala"
	selected = NULL;
#line 95 "/home/fborges/checkout/gnome-boxes/src/icon-view.vala"
	result = _tmp6_;
#line 95 "/home/fborges/checkout/gnome-boxes/src/icon-view.vala"
	__g_list_free__g_object_unref0_0 (selected);
#line 95 "/home/fborges/checkout/gnome-boxes/src/icon-view.vala"
	return result;
#line 886 "icon-view.c"
}


static Block28Data*
block28_data_ref (Block28Data* _data28_)
{
#line 98 "/home/fborges/checkout/gnome-boxes/src/icon-view.vala"
	g_atomic_int_inc (&_data28_->_ref_count_);
#line 98 "/home/fborges/checkout/gnome-boxes/src/icon-view.vala"
	return _data28_;
#line 897 "icon-view.c"
}


static void
block28_data_unref (void * _userdata_)
{
	Block28Data* _data28_;
	_data28_ = (Block28Data*) _userdata_;
#line 98 "/home/fborges/checkout/gnome-boxes/src/icon-view.vala"
	if (g_atomic_int_dec_and_test (&_data28_->_ref_count_)) {
#line 908 "icon-view.c"
		BoxesIconView* self;
#line 98 "/home/fborges/checkout/gnome-boxes/src/icon-view.vala"
		self = _data28_->self;
#line 98 "/home/fborges/checkout/gnome-boxes/src/icon-view.vala"
		_g_object_unref0 (_data28_->first_child);
#line 98 "/home/fborges/checkout/gnome-boxes/src/icon-view.vala"
		_g_object_unref0 (self);
#line 98 "/home/fborges/checkout/gnome-boxes/src/icon-view.vala"
		g_slice_free (Block28Data, _data28_);
#line 918 "icon-view.c"
	}
}


static void
__lambda241_ (Block28Data* _data28_,
              GtkFlowBoxChild* box_child)
{
	BoxesIconView* self;
	GtkFlowBoxChild* _tmp0_;
#line 100 "/home/fborges/checkout/gnome-boxes/src/icon-view.vala"
	self = _data28_->self;
#line 100 "/home/fborges/checkout/gnome-boxes/src/icon-view.vala"
	g_return_if_fail (box_child != NULL);
#line 101 "/home/fborges/checkout/gnome-boxes/src/icon-view.vala"
	_tmp0_ = _data28_->first_child;
#line 101 "/home/fborges/checkout/gnome-boxes/src/icon-view.vala"
	if (_tmp0_ == NULL) {
#line 937 "icon-view.c"
		GtkFlowBoxChild* _tmp1_;
#line 102 "/home/fborges/checkout/gnome-boxes/src/icon-view.vala"
		_tmp1_ = _g_object_ref0 (box_child);
#line 102 "/home/fborges/checkout/gnome-boxes/src/icon-view.vala"
		_g_object_unref0 (_data28_->first_child);
#line 102 "/home/fborges/checkout/gnome-boxes/src/icon-view.vala"
		_data28_->first_child = _tmp1_;
#line 945 "icon-view.c"
	}
}


static void
___lambda241__gfunc (gconstpointer data,
                     gpointer self)
{
#line 100 "/home/fborges/checkout/gnome-boxes/src/icon-view.vala"
	__lambda241_ (self, (GtkFlowBoxChild*) data);
#line 956 "icon-view.c"
}


static void
boxes_icon_view_real_activate_first_item (BoxesICollectionView* base)
{
	BoxesIconView * self;
	Block28Data* _data28_;
	GtkFlowBoxChild* _tmp0_;
#line 98 "/home/fborges/checkout/gnome-boxes/src/icon-view.vala"
	self = (BoxesIconView*) base;
#line 98 "/home/fborges/checkout/gnome-boxes/src/icon-view.vala"
	_data28_ = g_slice_new0 (Block28Data);
#line 98 "/home/fborges/checkout/gnome-boxes/src/icon-view.vala"
	_data28_->_ref_count_ = 1;
#line 98 "/home/fborges/checkout/gnome-boxes/src/icon-view.vala"
	_data28_->self = g_object_ref (self);
#line 99 "/home/fborges/checkout/gnome-boxes/src/icon-view.vala"
	_data28_->first_child = NULL;
#line 100 "/home/fborges/checkout/gnome-boxes/src/icon-view.vala"
	boxes_icon_view_foreach_child (self, ___lambda241__gfunc, _data28_);
#line 105 "/home/fborges/checkout/gnome-boxes/src/icon-view.vala"
	_tmp0_ = _data28_->first_child;
#line 105 "/home/fborges/checkout/gnome-boxes/src/icon-view.vala"
	if (_tmp0_ == NULL) {
#line 982 "icon-view.c"
		GtkFlowBox* _tmp1_;
		GtkFlowBoxChild* _tmp2_;
#line 106 "/home/fborges/checkout/gnome-boxes/src/icon-view.vala"
		_tmp1_ = self->priv->flowbox;
#line 106 "/home/fborges/checkout/gnome-boxes/src/icon-view.vala"
		_tmp2_ = _data28_->first_child;
#line 106 "/home/fborges/checkout/gnome-boxes/src/icon-view.vala"
		g_signal_emit_by_name (_tmp1_, "child-activated", _tmp2_);
#line 991 "icon-view.c"
	}
#line 98 "/home/fborges/checkout/gnome-boxes/src/icon-view.vala"
	block28_data_unref (_data28_);
#line 98 "/home/fborges/checkout/gnome-boxes/src/icon-view.vala"
	_data28_ = NULL;
#line 997 "icon-view.c"
}


static Block29Data*
block29_data_ref (Block29Data* _data29_)
{
#line 110 "/home/fborges/checkout/gnome-boxes/src/icon-view.vala"
	g_atomic_int_inc (&_data29_->_ref_count_);
#line 110 "/home/fborges/checkout/gnome-boxes/src/icon-view.vala"
	return _data29_;
#line 1008 "icon-view.c"
}


static void
block29_data_unref (void * _userdata_)
{
	Block29Data* _data29_;
	_data29_ = (Block29Data*) _userdata_;
#line 110 "/home/fborges/checkout/gnome-boxes/src/icon-view.vala"
	if (g_atomic_int_dec_and_test (&_data29_->_ref_count_)) {
#line 1019 "icon-view.c"
		BoxesIconView* self;
#line 110 "/home/fborges/checkout/gnome-boxes/src/icon-view.vala"
		self = _data29_->self;
#line 110 "/home/fborges/checkout/gnome-boxes/src/icon-view.vala"
		_g_object_unref0 (_data29_->child);
#line 110 "/home/fborges/checkout/gnome-boxes/src/icon-view.vala"
		_g_object_unref0 (self);
#line 110 "/home/fborges/checkout/gnome-boxes/src/icon-view.vala"
		g_slice_free (Block29Data, _data29_);
#line 1029 "icon-view.c"
	}
}


static void
__lambda243_ (Block29Data* _data29_)
{
	BoxesIconView* self;
#line 116 "/home/fborges/checkout/gnome-boxes/src/icon-view.vala"
	self = _data29_->self;
#line 117 "/home/fborges/checkout/gnome-boxes/src/icon-view.vala"
	boxes_icon_view_propagate_view_child_selection (self, _data29_->child);
#line 1042 "icon-view.c"
}


static void
___lambda243__g_object_notify (GObject* _sender,
                               GParamSpec* pspec,
                               gpointer self)
{
#line 116 "/home/fborges/checkout/gnome-boxes/src/icon-view.vala"
	__lambda243_ (self);
#line 1053 "icon-view.c"
}


static GtkWidget*
__lambda242_ (BoxesIconView* self,
              GObject* item)
{
	GtkWidget* result = NULL;
	Block29Data* _data29_;
	GtkFlowBoxChild* _tmp0_;
	BoxesIconViewChild* box = NULL;
	BoxesIconViewChild* _tmp1_;
	GtkWidget* _tmp2_;
#line 110 "/home/fborges/checkout/gnome-boxes/src/icon-view.vala"
	g_return_val_if_fail (item != NULL, NULL);
#line 110 "/home/fborges/checkout/gnome-boxes/src/icon-view.vala"
	_data29_ = g_slice_new0 (Block29Data);
#line 110 "/home/fborges/checkout/gnome-boxes/src/icon-view.vala"
	_data29_->_ref_count_ = 1;
#line 110 "/home/fborges/checkout/gnome-boxes/src/icon-view.vala"
	_data29_->self = g_object_ref (self);
#line 111 "/home/fborges/checkout/gnome-boxes/src/icon-view.vala"
	_tmp0_ = (GtkFlowBoxChild*) gtk_flow_box_child_new ();
#line 111 "/home/fborges/checkout/gnome-boxes/src/icon-view.vala"
	g_object_ref_sink (_tmp0_);
#line 111 "/home/fborges/checkout/gnome-boxes/src/icon-view.vala"
	_data29_->child = _tmp0_;
#line 112 "/home/fborges/checkout/gnome-boxes/src/icon-view.vala"
	gtk_widget_set_halign ((GtkWidget*) _data29_->child, GTK_ALIGN_START);
#line 113 "/home/fborges/checkout/gnome-boxes/src/icon-view.vala"
	_tmp1_ = boxes_icon_view_child_new (G_TYPE_CHECK_INSTANCE_TYPE (item, BOXES_TYPE_COLLECTION_ITEM) ? ((BoxesCollectionItem*) item) : NULL);
#line 113 "/home/fborges/checkout/gnome-boxes/src/icon-view.vala"
	g_object_ref_sink (_tmp1_);
#line 113 "/home/fborges/checkout/gnome-boxes/src/icon-view.vala"
	box = _tmp1_;
#line 114 "/home/fborges/checkout/gnome-boxes/src/icon-view.vala"
	gtk_container_add ((GtkContainer*) _data29_->child, (GtkWidget*) box);
#line 116 "/home/fborges/checkout/gnome-boxes/src/icon-view.vala"
	g_signal_connect_data ((GObject*) box, "notify::selected", (GCallback) ___lambda243__g_object_notify, block29_data_ref (_data29_), (GClosureNotify) block29_data_unref, 0);
#line 120 "/home/fborges/checkout/gnome-boxes/src/icon-view.vala"
	gtk_widget_set_visible ((GtkWidget*) box, TRUE);
#line 121 "/home/fborges/checkout/gnome-boxes/src/icon-view.vala"
	gtk_widget_set_visible ((GtkWidget*) _data29_->child, TRUE);
#line 123 "/home/fborges/checkout/gnome-boxes/src/icon-view.vala"
	_tmp2_ = _g_object_ref0 ((GtkWidget*) _data29_->child);
#line 123 "/home/fborges/checkout/gnome-boxes/src/icon-view.vala"
	result = _tmp2_;
#line 123 "/home/fborges/checkout/gnome-boxes/src/icon-view.vala"
	_g_object_unref0 (box);
#line 123 "/home/fborges/checkout/gnome-boxes/src/icon-view.vala"
	block29_data_unref (_data29_);
#line 123 "/home/fborges/checkout/gnome-boxes/src/icon-view.vala"
	_data29_ = NULL;
#line 123 "/home/fborges/checkout/gnome-boxes/src/icon-view.vala"
	return result;
#line 1109 "icon-view.c"
}


static GtkWidget*
___lambda242__gtk_flow_box_create_widget_func (GObject* item,
                                               gpointer self)
{
	GtkWidget* result;
	result = __lambda242_ ((BoxesIconView*) self, item);
#line 110 "/home/fborges/checkout/gnome-boxes/src/icon-view.vala"
	return result;
#line 1121 "icon-view.c"
}


static gboolean
_boxes_icon_view_model_filter_gtk_flow_box_filter_func (GtkFlowBoxChild* child,
                                                        gpointer self)
{
	gboolean result;
	result = boxes_icon_view_model_filter ((BoxesIconView*) self, child);
#line 126 "/home/fborges/checkout/gnome-boxes/src/icon-view.vala"
	return result;
#line 1133 "icon-view.c"
}


static void
boxes_icon_view_setup_flowbox (BoxesIconView* self)
{
	GtkFlowBox* _tmp0_;
	BoxesApp* _tmp1_;
	BoxesCollection* _tmp2_;
	GListStore* _tmp3_;
	GtkFlowBox* _tmp4_;
#line 109 "/home/fborges/checkout/gnome-boxes/src/icon-view.vala"
	g_return_if_fail (self != NULL);
#line 110 "/home/fborges/checkout/gnome-boxes/src/icon-view.vala"
	_tmp0_ = self->priv->flowbox;
#line 110 "/home/fborges/checkout/gnome-boxes/src/icon-view.vala"
	_tmp1_ = boxes_app_app;
#line 110 "/home/fborges/checkout/gnome-boxes/src/icon-view.vala"
	_tmp2_ = _tmp1_->collection;
#line 110 "/home/fborges/checkout/gnome-boxes/src/icon-view.vala"
	_tmp3_ = _tmp2_->items;
#line 110 "/home/fborges/checkout/gnome-boxes/src/icon-view.vala"
	gtk_flow_box_bind_model (_tmp0_, (GListModel*) _tmp3_, ___lambda242__gtk_flow_box_create_widget_func, g_object_ref (self), g_object_unref);
#line 126 "/home/fborges/checkout/gnome-boxes/src/icon-view.vala"
	_tmp4_ = self->priv->flowbox;
#line 126 "/home/fborges/checkout/gnome-boxes/src/icon-view.vala"
	gtk_flow_box_set_filter_func (_tmp4_, _boxes_icon_view_model_filter_gtk_flow_box_filter_func, g_object_ref (self), g_object_unref);
#line 1161 "icon-view.c"
}


static BoxesCollectionItem*
boxes_icon_view_get_item_for_child (BoxesIconView* self,
                                    GtkFlowBoxChild* child)
{
	BoxesCollectionItem* result = NULL;
	BoxesIconViewChild* view = NULL;
	GtkWidget* _tmp0_;
	BoxesIconViewChild* _tmp1_;
	BoxesIconViewChild* _tmp2_;
	BoxesIconViewChild* _tmp3_;
	BoxesCollectionItem* _tmp4_;
	BoxesCollectionItem* _tmp5_;
	BoxesCollectionItem* _tmp6_;
#line 129 "/home/fborges/checkout/gnome-boxes/src/icon-view.vala"
	g_return_val_if_fail (self != NULL, NULL);
#line 129 "/home/fborges/checkout/gnome-boxes/src/icon-view.vala"
	g_return_val_if_fail (child != NULL, NULL);
#line 130 "/home/fborges/checkout/gnome-boxes/src/icon-view.vala"
	_tmp0_ = gtk_bin_get_child ((GtkBin*) child);
#line 130 "/home/fborges/checkout/gnome-boxes/src/icon-view.vala"
	_tmp1_ = _g_object_ref0 (G_TYPE_CHECK_INSTANCE_TYPE (_tmp0_, BOXES_TYPE_ICON_VIEW_CHILD) ? ((BoxesIconViewChild*) _tmp0_) : NULL);
#line 130 "/home/fborges/checkout/gnome-boxes/src/icon-view.vala"
	view = _tmp1_;
#line 131 "/home/fborges/checkout/gnome-boxes/src/icon-view.vala"
	_tmp2_ = view;
#line 131 "/home/fborges/checkout/gnome-boxes/src/icon-view.vala"
	if (_tmp2_ == NULL) {
#line 132 "/home/fborges/checkout/gnome-boxes/src/icon-view.vala"
		result = NULL;
#line 132 "/home/fborges/checkout/gnome-boxes/src/icon-view.vala"
		_g_object_unref0 (view);
#line 132 "/home/fborges/checkout/gnome-boxes/src/icon-view.vala"
		return result;
#line 1198 "icon-view.c"
	}
#line 134 "/home/fborges/checkout/gnome-boxes/src/icon-view.vala"
	_tmp3_ = view;
#line 134 "/home/fborges/checkout/gnome-boxes/src/icon-view.vala"
	_tmp4_ = boxes_icon_view_child_get_item (_tmp3_);
#line 134 "/home/fborges/checkout/gnome-boxes/src/icon-view.vala"
	_tmp5_ = _tmp4_;
#line 134 "/home/fborges/checkout/gnome-boxes/src/icon-view.vala"
	_tmp6_ = _g_object_ref0 (_tmp5_);
#line 134 "/home/fborges/checkout/gnome-boxes/src/icon-view.vala"
	result = _tmp6_;
#line 134 "/home/fborges/checkout/gnome-boxes/src/icon-view.vala"
	_g_object_unref0 (view);
#line 134 "/home/fborges/checkout/gnome-boxes/src/icon-view.vala"
	return result;
#line 1214 "icon-view.c"
}


static Block30Data*
block30_data_ref (Block30Data* _data30_)
{
#line 137 "/home/fborges/checkout/gnome-boxes/src/icon-view.vala"
	g_atomic_int_inc (&_data30_->_ref_count_);
#line 137 "/home/fborges/checkout/gnome-boxes/src/icon-view.vala"
	return _data30_;
#line 1225 "icon-view.c"
}


static void
block30_data_unref (void * _userdata_)
{
	Block30Data* _data30_;
	_data30_ = (Block30Data*) _userdata_;
#line 137 "/home/fborges/checkout/gnome-boxes/src/icon-view.vala"
	if (g_atomic_int_dec_and_test (&_data30_->_ref_count_)) {
#line 1236 "icon-view.c"
		BoxesIconView* self;
#line 137 "/home/fborges/checkout/gnome-boxes/src/icon-view.vala"
		self = _data30_->self;
#line 137 "/home/fborges/checkout/gnome-boxes/src/icon-view.vala"
		_g_object_unref0 (self);
#line 137 "/home/fborges/checkout/gnome-boxes/src/icon-view.vala"
		g_slice_free (Block30Data, _data30_);
#line 1244 "icon-view.c"
	}
}


static void
__lambda210_ (Block30Data* _data30_,
              GtkWidget* child)
{
	BoxesIconView* self;
	GtkFlowBoxChild* view_child = NULL;
	GtkFlowBoxChild* _tmp0_;
	GtkFlowBoxChild* _tmp1_;
	GtkFlowBoxChild* _tmp2_;
#line 138 "/home/fborges/checkout/gnome-boxes/src/icon-view.vala"
	self = _data30_->self;
#line 138 "/home/fborges/checkout/gnome-boxes/src/icon-view.vala"
	g_return_if_fail (child != NULL);
#line 139 "/home/fborges/checkout/gnome-boxes/src/icon-view.vala"
	_tmp0_ = _g_object_ref0 (G_TYPE_CHECK_INSTANCE_TYPE (child, gtk_flow_box_child_get_type ()) ? ((GtkFlowBoxChild*) child) : NULL);
#line 139 "/home/fborges/checkout/gnome-boxes/src/icon-view.vala"
	view_child = _tmp0_;
#line 140 "/home/fborges/checkout/gnome-boxes/src/icon-view.vala"
	_tmp1_ = view_child;
#line 140 "/home/fborges/checkout/gnome-boxes/src/icon-view.vala"
	if (_tmp1_ == NULL) {
#line 141 "/home/fborges/checkout/gnome-boxes/src/icon-view.vala"
		_g_object_unref0 (view_child);
#line 141 "/home/fborges/checkout/gnome-boxes/src/icon-view.vala"
		return;
#line 1274 "icon-view.c"
	}
#line 143 "/home/fborges/checkout/gnome-boxes/src/icon-view.vala"
	_tmp2_ = view_child;
#line 143 "/home/fborges/checkout/gnome-boxes/src/icon-view.vala"
	_data30_->func (_tmp2_, _data30_->func_target);
#line 138 "/home/fborges/checkout/gnome-boxes/src/icon-view.vala"
	_g_object_unref0 (view_child);
#line 1282 "icon-view.c"
}


static void
___lambda210__gtk_callback (GtkWidget* widget,
                            gpointer self)
{
#line 138 "/home/fborges/checkout/gnome-boxes/src/icon-view.vala"
	__lambda210_ (self, widget);
#line 1292 "icon-view.c"
}


static void
boxes_icon_view_foreach_child (BoxesIconView* self,
                               GFunc func,
                               void* func_target)
{
	Block30Data* _data30_;
	GtkFlowBox* _tmp0_;
#line 137 "/home/fborges/checkout/gnome-boxes/src/icon-view.vala"
	g_return_if_fail (self != NULL);
#line 137 "/home/fborges/checkout/gnome-boxes/src/icon-view.vala"
	_data30_ = g_slice_new0 (Block30Data);
#line 137 "/home/fborges/checkout/gnome-boxes/src/icon-view.vala"
	_data30_->_ref_count_ = 1;
#line 137 "/home/fborges/checkout/gnome-boxes/src/icon-view.vala"
	_data30_->self = g_object_ref (self);
#line 137 "/home/fborges/checkout/gnome-boxes/src/icon-view.vala"
	_data30_->func = func;
#line 137 "/home/fborges/checkout/gnome-boxes/src/icon-view.vala"
	_data30_->func_target = func_target;
#line 138 "/home/fborges/checkout/gnome-boxes/src/icon-view.vala"
	_tmp0_ = self->priv->flowbox;
#line 138 "/home/fborges/checkout/gnome-boxes/src/icon-view.vala"
	gtk_container_forall ((GtkContainer*) _tmp0_, ___lambda210__gtk_callback, _data30_);
#line 137 "/home/fborges/checkout/gnome-boxes/src/icon-view.vala"
	block30_data_unref (_data30_);
#line 137 "/home/fborges/checkout/gnome-boxes/src/icon-view.vala"
	_data30_ = NULL;
#line 1323 "icon-view.c"
}


static gboolean
boxes_icon_view_model_filter (BoxesIconView* self,
                              GtkFlowBoxChild* child)
{
	gboolean result = FALSE;
	BoxesCollectionItem* item = NULL;
	BoxesCollectionItem* _tmp0_;
	BoxesCollectionItem* _tmp1_;
	BoxesCollectionFilter* _tmp2_;
	BoxesCollectionFilter* _tmp3_;
	BoxesCollectionItem* _tmp4_;
#line 147 "/home/fborges/checkout/gnome-boxes/src/icon-view.vala"
	g_return_val_if_fail (self != NULL, FALSE);
#line 147 "/home/fborges/checkout/gnome-boxes/src/icon-view.vala"
	g_return_val_if_fail (child != NULL, FALSE);
#line 148 "/home/fborges/checkout/gnome-boxes/src/icon-view.vala"
	if (child == NULL) {
#line 149 "/home/fborges/checkout/gnome-boxes/src/icon-view.vala"
		result = FALSE;
#line 149 "/home/fborges/checkout/gnome-boxes/src/icon-view.vala"
		return result;
#line 1348 "icon-view.c"
	}
#line 151 "/home/fborges/checkout/gnome-boxes/src/icon-view.vala"
	_tmp0_ = boxes_icon_view_get_item_for_child (self, child);
#line 151 "/home/fborges/checkout/gnome-boxes/src/icon-view.vala"
	item = _tmp0_;
#line 152 "/home/fborges/checkout/gnome-boxes/src/icon-view.vala"
	_tmp1_ = item;
#line 152 "/home/fborges/checkout/gnome-boxes/src/icon-view.vala"
	if (_tmp1_ == NULL) {
#line 153 "/home/fborges/checkout/gnome-boxes/src/icon-view.vala"
		result = FALSE;
#line 153 "/home/fborges/checkout/gnome-boxes/src/icon-view.vala"
		_g_object_unref0 (item);
#line 153 "/home/fborges/checkout/gnome-boxes/src/icon-view.vala"
		return result;
#line 1364 "icon-view.c"
	}
#line 155 "/home/fborges/checkout/gnome-boxes/src/icon-view.vala"
	_tmp2_ = boxes_icollection_view_get_filter ((BoxesICollectionView*) self);
#line 155 "/home/fborges/checkout/gnome-boxes/src/icon-view.vala"
	_tmp3_ = _tmp2_;
#line 155 "/home/fborges/checkout/gnome-boxes/src/icon-view.vala"
	_tmp4_ = item;
#line 155 "/home/fborges/checkout/gnome-boxes/src/icon-view.vala"
	result = boxes_collection_filter_filter (_tmp3_, G_TYPE_CHECK_INSTANCE_TYPE (_tmp4_, BOXES_TYPE_COLLECTION_ITEM) ? ((BoxesCollectionItem*) _tmp4_) : NULL);
#line 155 "/home/fborges/checkout/gnome-boxes/src/icon-view.vala"
	_g_object_unref0 (item);
#line 155 "/home/fborges/checkout/gnome-boxes/src/icon-view.vala"
	return result;
#line 1378 "icon-view.c"
}


static void
boxes_icon_view_ui_state_changed (BoxesIconView* self)
{
	BoxesUIState _tmp0_;
	BoxesUIState _tmp1_;
#line 158 "/home/fborges/checkout/gnome-boxes/src/icon-view.vala"
	g_return_if_fail (self != NULL);
#line 159 "/home/fborges/checkout/gnome-boxes/src/icon-view.vala"
	_tmp0_ = boxes_ui_get_ui_state ((BoxesUI*) self);
#line 159 "/home/fborges/checkout/gnome-boxes/src/icon-view.vala"
	_tmp1_ = _tmp0_;
#line 159 "/home/fborges/checkout/gnome-boxes/src/icon-view.vala"
	if (_tmp1_ == BOXES_UI_STATE_COLLECTION) {
#line 1395 "icon-view.c"
		GtkFlowBox* _tmp2_;
#line 160 "/home/fborges/checkout/gnome-boxes/src/icon-view.vala"
		_tmp2_ = self->priv->flowbox;
#line 160 "/home/fborges/checkout/gnome-boxes/src/icon-view.vala"
		gtk_flow_box_unselect_all (_tmp2_);
#line 1401 "icon-view.c"
	}
}


static void
boxes_icon_view_on_child_activated (BoxesIconView* self,
                                    GtkFlowBoxChild* child)
{
	BoxesAppWindow* _tmp0_;
	gboolean _tmp1_;
	gboolean _tmp2_;
	BoxesCollectionItem* item = NULL;
	BoxesCollectionItem* _tmp3_;
	gboolean _tmp4_ = FALSE;
	BoxesCollectionItem* _tmp5_;
	BoxesAppWindow* _tmp9_;
	BoxesCollectionItem* _tmp10_;
#line 164 "/home/fborges/checkout/gnome-boxes/src/icon-view.vala"
	g_return_if_fail (self != NULL);
#line 164 "/home/fborges/checkout/gnome-boxes/src/icon-view.vala"
	g_return_if_fail (child != NULL);
#line 165 "/home/fborges/checkout/gnome-boxes/src/icon-view.vala"
	_tmp0_ = self->priv->window;
#line 165 "/home/fborges/checkout/gnome-boxes/src/icon-view.vala"
	_tmp1_ = boxes_app_window_get_selection_mode (_tmp0_);
#line 165 "/home/fborges/checkout/gnome-boxes/src/icon-view.vala"
	_tmp2_ = _tmp1_;
#line 165 "/home/fborges/checkout/gnome-boxes/src/icon-view.vala"
	if (_tmp2_) {
#line 166 "/home/fborges/checkout/gnome-boxes/src/icon-view.vala"
		return;
#line 1433 "icon-view.c"
	}
#line 168 "/home/fborges/checkout/gnome-boxes/src/icon-view.vala"
	_tmp3_ = boxes_icon_view_get_item_for_child (self, child);
#line 168 "/home/fborges/checkout/gnome-boxes/src/icon-view.vala"
	item = _tmp3_;
#line 169 "/home/fborges/checkout/gnome-boxes/src/icon-view.vala"
	_tmp5_ = item;
#line 169 "/home/fborges/checkout/gnome-boxes/src/icon-view.vala"
	if (G_TYPE_CHECK_INSTANCE_TYPE (_tmp5_, BOXES_TYPE_LIBVIRT_MACHINE)) {
#line 1443 "icon-view.c"
		BoxesCollectionItem* _tmp6_;
		gboolean _tmp7_;
		gboolean _tmp8_;
#line 169 "/home/fborges/checkout/gnome-boxes/src/icon-view.vala"
		_tmp6_ = item;
#line 169 "/home/fborges/checkout/gnome-boxes/src/icon-view.vala"
		_tmp7_ = boxes_libvirt_machine_get_importing (G_TYPE_CHECK_INSTANCE_TYPE (_tmp6_, BOXES_TYPE_LIBVIRT_MACHINE) ? ((BoxesLibvirtMachine*) _tmp6_) : NULL);
#line 169 "/home/fborges/checkout/gnome-boxes/src/icon-view.vala"
		_tmp8_ = _tmp7_;
#line 169 "/home/fborges/checkout/gnome-boxes/src/icon-view.vala"
		_tmp4_ = _tmp8_;
#line 1455 "icon-view.c"
	} else {
#line 169 "/home/fborges/checkout/gnome-boxes/src/icon-view.vala"
		_tmp4_ = FALSE;
#line 1459 "icon-view.c"
	}
#line 169 "/home/fborges/checkout/gnome-boxes/src/icon-view.vala"
	if (_tmp4_) {
#line 170 "/home/fborges/checkout/gnome-boxes/src/icon-view.vala"
		_g_object_unref0 (item);
#line 170 "/home/fborges/checkout/gnome-boxes/src/icon-view.vala"
		return;
#line 1467 "icon-view.c"
	}
#line 172 "/home/fborges/checkout/gnome-boxes/src/icon-view.vala"
	_tmp9_ = self->priv->window;
#line 172 "/home/fborges/checkout/gnome-boxes/src/icon-view.vala"
	_tmp10_ = item;
#line 172 "/home/fborges/checkout/gnome-boxes/src/icon-view.vala"
	boxes_app_window_select_item (_tmp9_, _tmp10_);
#line 174 "/home/fborges/checkout/gnome-boxes/src/icon-view.vala"
	boxes_icon_view_update_selection_mode (self);
#line 164 "/home/fborges/checkout/gnome-boxes/src/icon-view.vala"
	_g_object_unref0 (item);
#line 1479 "icon-view.c"
}


static void
_boxes_icon_view_on_child_activated_gtk_flow_box_child_activated (GtkFlowBox* _sender,
                                                                  GtkFlowBoxChild* child,
                                                                  gpointer self)
{
#line 10 "/home/fborges/checkout/gnome-boxes/src/icon-view.vala"
	boxes_icon_view_on_child_activated ((BoxesIconView*) self, child);
#line 1490 "icon-view.c"
}


static gboolean
boxes_icon_view_on_button_press_event (BoxesIconView* self,
                                       GdkEventButton* event)
{
	gboolean result = FALSE;
	gboolean _tmp0_ = FALSE;
	GdkEventType _tmp1_;
	GtkFlowBoxChild* child = NULL;
	GtkFlowBox* _tmp3_;
	gdouble _tmp4_;
	gdouble _tmp5_;
	GtkFlowBoxChild* _tmp6_;
	GtkFlowBoxChild* _tmp7_;
	GtkFlowBoxChild* _tmp8_;
#line 178 "/home/fborges/checkout/gnome-boxes/src/icon-view.vala"
	g_return_val_if_fail (self != NULL, FALSE);
#line 178 "/home/fborges/checkout/gnome-boxes/src/icon-view.vala"
	g_return_val_if_fail (event != NULL, FALSE);
#line 179 "/home/fborges/checkout/gnome-boxes/src/icon-view.vala"
	_tmp1_ = event->type;
#line 179 "/home/fborges/checkout/gnome-boxes/src/icon-view.vala"
	if (_tmp1_ != GDK_BUTTON_RELEASE) {
#line 179 "/home/fborges/checkout/gnome-boxes/src/icon-view.vala"
		_tmp0_ = TRUE;
#line 1518 "icon-view.c"
	} else {
		guint _tmp2_;
#line 179 "/home/fborges/checkout/gnome-boxes/src/icon-view.vala"
		_tmp2_ = event->button;
#line 179 "/home/fborges/checkout/gnome-boxes/src/icon-view.vala"
		_tmp0_ = _tmp2_ != ((guint) 3);
#line 1525 "icon-view.c"
	}
#line 179 "/home/fborges/checkout/gnome-boxes/src/icon-view.vala"
	if (_tmp0_) {
#line 180 "/home/fborges/checkout/gnome-boxes/src/icon-view.vala"
		result = FALSE;
#line 180 "/home/fborges/checkout/gnome-boxes/src/icon-view.vala"
		return result;
#line 1533 "icon-view.c"
	}
#line 182 "/home/fborges/checkout/gnome-boxes/src/icon-view.vala"
	_tmp3_ = self->priv->flowbox;
#line 182 "/home/fborges/checkout/gnome-boxes/src/icon-view.vala"
	_tmp4_ = event->x;
#line 182 "/home/fborges/checkout/gnome-boxes/src/icon-view.vala"
	_tmp5_ = event->y;
#line 182 "/home/fborges/checkout/gnome-boxes/src/icon-view.vala"
	_tmp6_ = gtk_flow_box_get_child_at_pos (_tmp3_, (gint) _tmp4_, (gint) _tmp5_);
#line 182 "/home/fborges/checkout/gnome-boxes/src/icon-view.vala"
	_tmp7_ = _g_object_ref0 (_tmp6_);
#line 182 "/home/fborges/checkout/gnome-boxes/src/icon-view.vala"
	child = _tmp7_;
#line 184 "/home/fborges/checkout/gnome-boxes/src/icon-view.vala"
	_tmp8_ = child;
#line 184 "/home/fborges/checkout/gnome-boxes/src/icon-view.vala"
	result = boxes_icon_view_launch_context_popover_for_child (self, _tmp8_);
#line 184 "/home/fborges/checkout/gnome-boxes/src/icon-view.vala"
	_g_object_unref0 (child);
#line 184 "/home/fborges/checkout/gnome-boxes/src/icon-view.vala"
	return result;
#line 1555 "icon-view.c"
}


static gboolean
_boxes_icon_view_on_button_press_event_gtk_widget_button_release_event (GtkWidget* _sender,
                                                                        GdkEventButton* event,
                                                                        gpointer self)
{
	gboolean result;
	result = boxes_icon_view_on_button_press_event ((BoxesIconView*) self, event);
#line 10 "/home/fborges/checkout/gnome-boxes/src/icon-view.vala"
	return result;
#line 1568 "icon-view.c"
}


static gboolean
boxes_icon_view_on_key_press_event (BoxesIconView* self,
                                    GdkEventKey* event)
{
	gboolean result = FALSE;
	guint _tmp0_;
	GtkFlowBoxChild* child = NULL;
	GtkFlowBox* _tmp1_;
	GList* _tmp2_;
	GList* _tmp3_;
	gconstpointer _tmp4_;
	GtkFlowBoxChild* _tmp5_;
	GtkFlowBoxChild* _tmp6_;
	GtkFlowBoxChild* _tmp7_;
	GtkFlowBoxChild* _tmp8_;
#line 188 "/home/fborges/checkout/gnome-boxes/src/icon-view.vala"
	g_return_val_if_fail (self != NULL, FALSE);
#line 188 "/home/fborges/checkout/gnome-boxes/src/icon-view.vala"
	g_return_val_if_fail (event != NULL, FALSE);
#line 189 "/home/fborges/checkout/gnome-boxes/src/icon-view.vala"
	_tmp0_ = event->keyval;
#line 189 "/home/fborges/checkout/gnome-boxes/src/icon-view.vala"
	if (_tmp0_ != ((guint) GDK_KEY_Menu)) {
#line 190 "/home/fborges/checkout/gnome-boxes/src/icon-view.vala"
		result = FALSE;
#line 190 "/home/fborges/checkout/gnome-boxes/src/icon-view.vala"
		return result;
#line 1599 "icon-view.c"
	}
#line 192 "/home/fborges/checkout/gnome-boxes/src/icon-view.vala"
	_tmp1_ = self->priv->flowbox;
#line 192 "/home/fborges/checkout/gnome-boxes/src/icon-view.vala"
	_tmp2_ = gtk_flow_box_get_selected_children (_tmp1_);
#line 192 "/home/fborges/checkout/gnome-boxes/src/icon-view.vala"
	_tmp3_ = _tmp2_;
#line 192 "/home/fborges/checkout/gnome-boxes/src/icon-view.vala"
	_tmp4_ = g_list_nth_data (_tmp3_, (guint) 0);
#line 192 "/home/fborges/checkout/gnome-boxes/src/icon-view.vala"
	_tmp5_ = _g_object_ref0 ((GtkFlowBoxChild*) _tmp4_);
#line 192 "/home/fborges/checkout/gnome-boxes/src/icon-view.vala"
	_tmp6_ = _tmp5_;
#line 192 "/home/fborges/checkout/gnome-boxes/src/icon-view.vala"
	_g_list_free0 (_tmp3_);
#line 192 "/home/fborges/checkout/gnome-boxes/src/icon-view.vala"
	child = _tmp6_;
#line 193 "/home/fborges/checkout/gnome-boxes/src/icon-view.vala"
	_tmp7_ = child;
#line 193 "/home/fborges/checkout/gnome-boxes/src/icon-view.vala"
	if (_tmp7_ == NULL) {
#line 194 "/home/fborges/checkout/gnome-boxes/src/icon-view.vala"
		result = FALSE;
#line 194 "/home/fborges/checkout/gnome-boxes/src/icon-view.vala"
		_g_object_unref0 (child);
#line 194 "/home/fborges/checkout/gnome-boxes/src/icon-view.vala"
		return result;
#line 1627 "icon-view.c"
	}
#line 196 "/home/fborges/checkout/gnome-boxes/src/icon-view.vala"
	_tmp8_ = child;
#line 196 "/home/fborges/checkout/gnome-boxes/src/icon-view.vala"
	result = boxes_icon_view_launch_context_popover_for_child (self, _tmp8_);
#line 196 "/home/fborges/checkout/gnome-boxes/src/icon-view.vala"
	_g_object_unref0 (child);
#line 196 "/home/fborges/checkout/gnome-boxes/src/icon-view.vala"
	return result;
#line 1637 "icon-view.c"
}


static gboolean
_boxes_icon_view_on_key_press_event_gtk_widget_key_press_event (GtkWidget* _sender,
                                                                GdkEventKey* event,
                                                                gpointer self)
{
	gboolean result;
	result = boxes_icon_view_on_key_press_event ((BoxesIconView*) self, event);
#line 10 "/home/fborges/checkout/gnome-boxes/src/icon-view.vala"
	return result;
#line 1650 "icon-view.c"
}


static gboolean
boxes_icon_view_launch_context_popover_for_child (BoxesIconView* self,
                                                  GtkFlowBoxChild* child)
{
	gboolean result = FALSE;
	BoxesCollectionItem* item = NULL;
	BoxesCollectionItem* _tmp0_;
	BoxesCollectionItem* _tmp1_;
	GtkImage* thumbnail = NULL;
	GtkWidget* _tmp2_;
	GtkImage* _tmp3_;
	GtkImage* _tmp4_;
	BoxesActionsPopover* _tmp5_;
	BoxesCollectionItem* _tmp6_;
	BoxesActionsPopover* _tmp7_;
	GtkImage* _tmp8_;
	BoxesActionsPopover* _tmp9_;
#line 199 "/home/fborges/checkout/gnome-boxes/src/icon-view.vala"
	g_return_val_if_fail (self != NULL, FALSE);
#line 199 "/home/fborges/checkout/gnome-boxes/src/icon-view.vala"
	g_return_val_if_fail (child != NULL, FALSE);
#line 200 "/home/fborges/checkout/gnome-boxes/src/icon-view.vala"
	_tmp0_ = boxes_icon_view_get_item_for_child (self, child);
#line 200 "/home/fborges/checkout/gnome-boxes/src/icon-view.vala"
	item = _tmp0_;
#line 201 "/home/fborges/checkout/gnome-boxes/src/icon-view.vala"
	_tmp1_ = item;
#line 201 "/home/fborges/checkout/gnome-boxes/src/icon-view.vala"
	if (_tmp1_ == NULL) {
#line 202 "/home/fborges/checkout/gnome-boxes/src/icon-view.vala"
		result = FALSE;
#line 202 "/home/fborges/checkout/gnome-boxes/src/icon-view.vala"
		_g_object_unref0 (item);
#line 202 "/home/fborges/checkout/gnome-boxes/src/icon-view.vala"
		return result;
#line 1689 "icon-view.c"
	}
#line 204 "/home/fborges/checkout/gnome-boxes/src/icon-view.vala"
	_tmp2_ = gtk_bin_get_child ((GtkBin*) child);
#line 204 "/home/fborges/checkout/gnome-boxes/src/icon-view.vala"
	_tmp3_ = (G_TYPE_CHECK_INSTANCE_TYPE (_tmp2_, BOXES_TYPE_ICON_VIEW_CHILD) ? ((BoxesIconViewChild*) _tmp2_) : NULL)->thumbnail;
#line 204 "/home/fborges/checkout/gnome-boxes/src/icon-view.vala"
	_tmp4_ = _g_object_ref0 (_tmp3_);
#line 204 "/home/fborges/checkout/gnome-boxes/src/icon-view.vala"
	thumbnail = _tmp4_;
#line 206 "/home/fborges/checkout/gnome-boxes/src/icon-view.vala"
	_tmp5_ = self->priv->context_popover;
#line 206 "/home/fborges/checkout/gnome-boxes/src/icon-view.vala"
	_tmp6_ = item;
#line 206 "/home/fborges/checkout/gnome-boxes/src/icon-view.vala"
	boxes_actions_popover_update_for_item (_tmp5_, _tmp6_);
#line 207 "/home/fborges/checkout/gnome-boxes/src/icon-view.vala"
	_tmp7_ = self->priv->context_popover;
#line 207 "/home/fborges/checkout/gnome-boxes/src/icon-view.vala"
	_tmp8_ = thumbnail;
#line 207 "/home/fborges/checkout/gnome-boxes/src/icon-view.vala"
	gtk_popover_set_relative_to ((GtkPopover*) _tmp7_, (GtkWidget*) _tmp8_);
#line 208 "/home/fborges/checkout/gnome-boxes/src/icon-view.vala"
	_tmp9_ = self->priv->context_popover;
#line 208 "/home/fborges/checkout/gnome-boxes/src/icon-view.vala"
	gtk_widget_show ((GtkWidget*) _tmp9_);
#line 210 "/home/fborges/checkout/gnome-boxes/src/icon-view.vala"
	result = TRUE;
#line 210 "/home/fborges/checkout/gnome-boxes/src/icon-view.vala"
	_g_object_unref0 (thumbnail);
#line 210 "/home/fborges/checkout/gnome-boxes/src/icon-view.vala"
	_g_object_unref0 (item);
#line 210 "/home/fborges/checkout/gnome-boxes/src/icon-view.vala"
	return result;
#line 1723 "icon-view.c"
}


static void
__lambda211_ (BoxesIconView* self,
              GtkFlowBoxChild* child)
{
	BoxesIconViewChild* view_child = NULL;
	GtkWidget* _tmp0_;
	BoxesIconViewChild* _tmp1_;
	BoxesIconViewChild* _tmp2_;
	gboolean _tmp3_;
	gboolean _tmp4_;
	BoxesAppWindow* _tmp5_;
	gboolean _tmp6_;
	gboolean _tmp7_;
#line 214 "/home/fborges/checkout/gnome-boxes/src/icon-view.vala"
	g_return_if_fail (child != NULL);
#line 215 "/home/fborges/checkout/gnome-boxes/src/icon-view.vala"
	_tmp0_ = gtk_bin_get_child ((GtkBin*) child);
#line 215 "/home/fborges/checkout/gnome-boxes/src/icon-view.vala"
	_tmp1_ = _g_object_ref0 (G_TYPE_CHECK_INSTANCE_TYPE (_tmp0_, BOXES_TYPE_ICON_VIEW_CHILD) ? ((BoxesIconViewChild*) _tmp0_) : NULL);
#line 215 "/home/fborges/checkout/gnome-boxes/src/icon-view.vala"
	view_child = _tmp1_;
#line 217 "/home/fborges/checkout/gnome-boxes/src/icon-view.vala"
	_tmp2_ = view_child;
#line 217 "/home/fborges/checkout/gnome-boxes/src/icon-view.vala"
	_tmp3_ = boxes_icon_view_child_get_selection_mode (_tmp2_);
#line 217 "/home/fborges/checkout/gnome-boxes/src/icon-view.vala"
	_tmp4_ = _tmp3_;
#line 217 "/home/fborges/checkout/gnome-boxes/src/icon-view.vala"
	_tmp5_ = self->priv->window;
#line 217 "/home/fborges/checkout/gnome-boxes/src/icon-view.vala"
	_tmp6_ = boxes_app_window_get_selection_mode (_tmp5_);
#line 217 "/home/fborges/checkout/gnome-boxes/src/icon-view.vala"
	_tmp7_ = _tmp6_;
#line 217 "/home/fborges/checkout/gnome-boxes/src/icon-view.vala"
	if (_tmp4_ != _tmp7_) {
#line 1762 "icon-view.c"
		BoxesIconViewChild* _tmp8_;
		BoxesAppWindow* _tmp9_;
		gboolean _tmp10_;
		gboolean _tmp11_;
#line 218 "/home/fborges/checkout/gnome-boxes/src/icon-view.vala"
		_tmp8_ = view_child;
#line 218 "/home/fborges/checkout/gnome-boxes/src/icon-view.vala"
		_tmp9_ = self->priv->window;
#line 218 "/home/fborges/checkout/gnome-boxes/src/icon-view.vala"
		_tmp10_ = boxes_app_window_get_selection_mode (_tmp9_);
#line 218 "/home/fborges/checkout/gnome-boxes/src/icon-view.vala"
		_tmp11_ = _tmp10_;
#line 218 "/home/fborges/checkout/gnome-boxes/src/icon-view.vala"
		boxes_icon_view_child_set_selection_mode (_tmp8_, _tmp11_);
#line 1777 "icon-view.c"
	}
#line 220 "/home/fborges/checkout/gnome-boxes/src/icon-view.vala"
	boxes_icon_view_unselect_child (self, child);
#line 214 "/home/fborges/checkout/gnome-boxes/src/icon-view.vala"
	_g_object_unref0 (view_child);
#line 1783 "icon-view.c"
}


static void
___lambda211__gfunc (gconstpointer data,
                     gpointer self)
{
#line 214 "/home/fborges/checkout/gnome-boxes/src/icon-view.vala"
	__lambda211_ ((BoxesIconView*) self, (GtkFlowBoxChild*) data);
#line 1793 "icon-view.c"
}


static void
boxes_icon_view_update_selection_mode (BoxesIconView* self)
{
#line 213 "/home/fborges/checkout/gnome-boxes/src/icon-view.vala"
	g_return_if_fail (self != NULL);
#line 214 "/home/fborges/checkout/gnome-boxes/src/icon-view.vala"
	boxes_icon_view_foreach_child (self, ___lambda211__gfunc, self);
#line 1804 "icon-view.c"
}


static void
boxes_icon_view_propagate_view_child_selection (BoxesIconView* self,
                                                GtkFlowBoxChild* child)
{
	BoxesIconViewChild* view_child = NULL;
	GtkWidget* _tmp0_;
	BoxesIconViewChild* _tmp1_;
	BoxesIconViewChild* _tmp2_;
	gboolean _tmp3_;
	gboolean _tmp4_;
#line 224 "/home/fborges/checkout/gnome-boxes/src/icon-view.vala"
	g_return_if_fail (self != NULL);
#line 224 "/home/fborges/checkout/gnome-boxes/src/icon-view.vala"
	g_return_if_fail (child != NULL);
#line 225 "/home/fborges/checkout/gnome-boxes/src/icon-view.vala"
	_tmp0_ = gtk_bin_get_child ((GtkBin*) child);
#line 225 "/home/fborges/checkout/gnome-boxes/src/icon-view.vala"
	_tmp1_ = _g_object_ref0 (G_TYPE_CHECK_INSTANCE_TYPE (_tmp0_, BOXES_TYPE_ICON_VIEW_CHILD) ? ((BoxesIconViewChild*) _tmp0_) : NULL);
#line 225 "/home/fborges/checkout/gnome-boxes/src/icon-view.vala"
	view_child = _tmp1_;
#line 227 "/home/fborges/checkout/gnome-boxes/src/icon-view.vala"
	_tmp2_ = view_child;
#line 227 "/home/fborges/checkout/gnome-boxes/src/icon-view.vala"
	_tmp3_ = boxes_icon_view_child_get_selected (_tmp2_);
#line 227 "/home/fborges/checkout/gnome-boxes/src/icon-view.vala"
	_tmp4_ = _tmp3_;
#line 227 "/home/fborges/checkout/gnome-boxes/src/icon-view.vala"
	if (_tmp4_) {
#line 228 "/home/fborges/checkout/gnome-boxes/src/icon-view.vala"
		boxes_icon_view_select_child (self, child);
#line 1838 "icon-view.c"
	} else {
#line 230 "/home/fborges/checkout/gnome-boxes/src/icon-view.vala"
		boxes_icon_view_unselect_child (self, child);
#line 1842 "icon-view.c"
	}
#line 224 "/home/fborges/checkout/gnome-boxes/src/icon-view.vala"
	_g_object_unref0 (view_child);
#line 1846 "icon-view.c"
}


static void
boxes_icon_view_select_child (BoxesIconView* self,
                              GtkFlowBoxChild* child)
{
	BoxesIconViewChild* view_child = NULL;
	GtkWidget* _tmp0_;
	BoxesIconViewChild* _tmp1_;
	GtkFlowBox* _tmp2_;
	BoxesIconViewChild* _tmp3_;
	gboolean _tmp4_;
	gboolean _tmp5_;
	BoxesApp* _tmp7_;
#line 233 "/home/fborges/checkout/gnome-boxes/src/icon-view.vala"
	g_return_if_fail (self != NULL);
#line 233 "/home/fborges/checkout/gnome-boxes/src/icon-view.vala"
	g_return_if_fail (child != NULL);
#line 234 "/home/fborges/checkout/gnome-boxes/src/icon-view.vala"
	_tmp0_ = gtk_bin_get_child ((GtkBin*) child);
#line 234 "/home/fborges/checkout/gnome-boxes/src/icon-view.vala"
	_tmp1_ = _g_object_ref0 (G_TYPE_CHECK_INSTANCE_TYPE (_tmp0_, BOXES_TYPE_ICON_VIEW_CHILD) ? ((BoxesIconViewChild*) _tmp0_) : NULL);
#line 234 "/home/fborges/checkout/gnome-boxes/src/icon-view.vala"
	view_child = _tmp1_;
#line 236 "/home/fborges/checkout/gnome-boxes/src/icon-view.vala"
	_tmp2_ = self->priv->flowbox;
#line 236 "/home/fborges/checkout/gnome-boxes/src/icon-view.vala"
	gtk_flow_box_select_child (_tmp2_, child);
#line 237 "/home/fborges/checkout/gnome-boxes/src/icon-view.vala"
	_tmp3_ = view_child;
#line 237 "/home/fborges/checkout/gnome-boxes/src/icon-view.vala"
	_tmp4_ = boxes_icon_view_child_get_selected (_tmp3_);
#line 237 "/home/fborges/checkout/gnome-boxes/src/icon-view.vala"
	_tmp5_ = _tmp4_;
#line 237 "/home/fborges/checkout/gnome-boxes/src/icon-view.vala"
	if (!_tmp5_) {
#line 1884 "icon-view.c"
		BoxesIconViewChild* _tmp6_;
#line 238 "/home/fborges/checkout/gnome-boxes/src/icon-view.vala"
		_tmp6_ = view_child;
#line 238 "/home/fborges/checkout/gnome-boxes/src/icon-view.vala"
		boxes_icon_view_child_set_selected (_tmp6_, TRUE);
#line 1890 "icon-view.c"
	}
#line 240 "/home/fborges/checkout/gnome-boxes/src/icon-view.vala"
	_tmp7_ = boxes_app_app;
#line 240 "/home/fborges/checkout/gnome-boxes/src/icon-view.vala"
	g_object_notify ((GObject*) _tmp7_, "selected-items");
#line 233 "/home/fborges/checkout/gnome-boxes/src/icon-view.vala"
	_g_object_unref0 (view_child);
#line 1898 "icon-view.c"
}


static void
boxes_icon_view_unselect_child (BoxesIconView* self,
                                GtkFlowBoxChild* child)
{
	BoxesIconViewChild* view_child = NULL;
	GtkWidget* _tmp0_;
	BoxesIconViewChild* _tmp1_;
	GtkFlowBox* _tmp2_;
	BoxesIconViewChild* _tmp3_;
	gboolean _tmp4_;
	gboolean _tmp5_;
	BoxesApp* _tmp7_;
#line 243 "/home/fborges/checkout/gnome-boxes/src/icon-view.vala"
	g_return_if_fail (self != NULL);
#line 243 "/home/fborges/checkout/gnome-boxes/src/icon-view.vala"
	g_return_if_fail (child != NULL);
#line 244 "/home/fborges/checkout/gnome-boxes/src/icon-view.vala"
	_tmp0_ = gtk_bin_get_child ((GtkBin*) child);
#line 244 "/home/fborges/checkout/gnome-boxes/src/icon-view.vala"
	_tmp1_ = _g_object_ref0 (G_TYPE_CHECK_INSTANCE_TYPE (_tmp0_, BOXES_TYPE_ICON_VIEW_CHILD) ? ((BoxesIconViewChild*) _tmp0_) : NULL);
#line 244 "/home/fborges/checkout/gnome-boxes/src/icon-view.vala"
	view_child = _tmp1_;
#line 246 "/home/fborges/checkout/gnome-boxes/src/icon-view.vala"
	_tmp2_ = self->priv->flowbox;
#line 246 "/home/fborges/checkout/gnome-boxes/src/icon-view.vala"
	gtk_flow_box_unselect_child (_tmp2_, child);
#line 247 "/home/fborges/checkout/gnome-boxes/src/icon-view.vala"
	_tmp3_ = view_child;
#line 247 "/home/fborges/checkout/gnome-boxes/src/icon-view.vala"
	_tmp4_ = boxes_icon_view_child_get_selected (_tmp3_);
#line 247 "/home/fborges/checkout/gnome-boxes/src/icon-view.vala"
	_tmp5_ = _tmp4_;
#line 247 "/home/fborges/checkout/gnome-boxes/src/icon-view.vala"
	if (_tmp5_) {
#line 1936 "icon-view.c"
		BoxesIconViewChild* _tmp6_;
#line 248 "/home/fborges/checkout/gnome-boxes/src/icon-view.vala"
		_tmp6_ = view_child;
#line 248 "/home/fborges/checkout/gnome-boxes/src/icon-view.vala"
		boxes_icon_view_child_set_selected (_tmp6_, FALSE);
#line 1942 "icon-view.c"
	}
#line 250 "/home/fborges/checkout/gnome-boxes/src/icon-view.vala"
	_tmp7_ = boxes_app_app;
#line 250 "/home/fborges/checkout/gnome-boxes/src/icon-view.vala"
	g_object_notify ((GObject*) _tmp7_, "selected-items");
#line 243 "/home/fborges/checkout/gnome-boxes/src/icon-view.vala"
	_g_object_unref0 (view_child);
#line 1950 "icon-view.c"
}


static void
_boxes_icon_view_unselect_child_gfunc (gconstpointer data,
                                       gpointer self)
{
#line 256 "/home/fborges/checkout/gnome-boxes/src/icon-view.vala"
	boxes_icon_view_unselect_child ((BoxesIconView*) self, (GtkFlowBoxChild*) data);
#line 1960 "icon-view.c"
}


static void
boxes_icon_view_real_unselect_all (BoxesICollectionView* base)
{
	BoxesIconView * self;
	GtkFlowBox* _tmp0_;
	BoxesApp* _tmp1_;
#line 253 "/home/fborges/checkout/gnome-boxes/src/icon-view.vala"
	self = (BoxesIconView*) base;
#line 254 "/home/fborges/checkout/gnome-boxes/src/icon-view.vala"
	_tmp0_ = self->priv->flowbox;
#line 254 "/home/fborges/checkout/gnome-boxes/src/icon-view.vala"
	gtk_flow_box_unselect_all (_tmp0_);
#line 256 "/home/fborges/checkout/gnome-boxes/src/icon-view.vala"
	boxes_icon_view_foreach_child (self, _boxes_icon_view_unselect_child_gfunc, self);
#line 258 "/home/fborges/checkout/gnome-boxes/src/icon-view.vala"
	_tmp1_ = boxes_app_app;
#line 258 "/home/fborges/checkout/gnome-boxes/src/icon-view.vala"
	g_object_notify ((GObject*) _tmp1_, "selected-items");
#line 1982 "icon-view.c"
}


static void
_boxes_icon_view_select_child_gfunc (gconstpointer data,
                                     gpointer self)
{
#line 264 "/home/fborges/checkout/gnome-boxes/src/icon-view.vala"
	boxes_icon_view_select_child ((BoxesIconView*) self, (GtkFlowBoxChild*) data);
#line 1992 "icon-view.c"
}


static void
boxes_icon_view_real_select_all (BoxesICollectionView* base)
{
	BoxesIconView * self;
	GtkFlowBox* _tmp0_;
	BoxesApp* _tmp1_;
#line 261 "/home/fborges/checkout/gnome-boxes/src/icon-view.vala"
	self = (BoxesIconView*) base;
#line 262 "/home/fborges/checkout/gnome-boxes/src/icon-view.vala"
	_tmp0_ = self->priv->flowbox;
#line 262 "/home/fborges/checkout/gnome-boxes/src/icon-view.vala"
	gtk_flow_box_select_all (_tmp0_);
#line 264 "/home/fborges/checkout/gnome-boxes/src/icon-view.vala"
	boxes_icon_view_foreach_child (self, _boxes_icon_view_select_child_gfunc, self);
#line 266 "/home/fborges/checkout/gnome-boxes/src/icon-view.vala"
	_tmp1_ = boxes_app_app;
#line 266 "/home/fborges/checkout/gnome-boxes/src/icon-view.vala"
	g_object_notify ((GObject*) _tmp1_, "selected-items");
#line 2014 "icon-view.c"
}


BoxesIconView*
boxes_icon_view_construct (GType object_type)
{
	BoxesIconView * self = NULL;
#line 10 "/home/fborges/checkout/gnome-boxes/src/icon-view.vala"
	self = (BoxesIconView*) g_object_new (object_type, NULL);
#line 10 "/home/fborges/checkout/gnome-boxes/src/icon-view.vala"
	return self;
#line 2026 "icon-view.c"
}


BoxesIconView*
boxes_icon_view_new (void)
{
#line 10 "/home/fborges/checkout/gnome-boxes/src/icon-view.vala"
	return boxes_icon_view_construct (BOXES_TYPE_ICON_VIEW);
#line 2035 "icon-view.c"
}


static BoxesUIState
boxes_icon_view_real_get_previous_ui_state (BoxesUI* base)
{
	BoxesUIState result;
	BoxesIconView* self;
	BoxesUIState _tmp0_;
#line 11 "/home/fborges/checkout/gnome-boxes/src/icon-view.vala"
	self = (BoxesIconView*) base;
#line 11 "/home/fborges/checkout/gnome-boxes/src/icon-view.vala"
	_tmp0_ = self->priv->_previous_ui_state;
#line 11 "/home/fborges/checkout/gnome-boxes/src/icon-view.vala"
	result = _tmp0_;
#line 11 "/home/fborges/checkout/gnome-boxes/src/icon-view.vala"
	return result;
#line 2053 "icon-view.c"
}


static void
boxes_icon_view_real_set_previous_ui_state (BoxesUI* base,
                                            BoxesUIState value)
{
	BoxesIconView* self;
#line 11 "/home/fborges/checkout/gnome-boxes/src/icon-view.vala"
	self = (BoxesIconView*) base;
#line 11 "/home/fborges/checkout/gnome-boxes/src/icon-view.vala"
	if (boxes_icon_view_real_get_previous_ui_state (base) != value) {
#line 11 "/home/fborges/checkout/gnome-boxes/src/icon-view.vala"
		self->priv->_previous_ui_state = value;
#line 11 "/home/fborges/checkout/gnome-boxes/src/icon-view.vala"
		g_object_notify_by_pspec ((GObject *) self, boxes_icon_view_properties[BOXES_ICON_VIEW_PREVIOUS_UI_STATE_PROPERTY]);
#line 2070 "icon-view.c"
	}
}


static BoxesUIState
boxes_icon_view_real_get_ui_state (BoxesUI* base)
{
	BoxesUIState result;
	BoxesIconView* self;
	BoxesUIState _tmp0_;
#line 12 "/home/fborges/checkout/gnome-boxes/src/icon-view.vala"
	self = (BoxesIconView*) base;
#line 12 "/home/fborges/checkout/gnome-boxes/src/icon-view.vala"
	_tmp0_ = self->priv->_ui_state;
#line 12 "/home/fborges/checkout/gnome-boxes/src/icon-view.vala"
	result = _tmp0_;
#line 12 "/home/fborges/checkout/gnome-boxes/src/icon-view.vala"
	return result;
#line 2089 "icon-view.c"
}


static void
boxes_icon_view_real_set_ui_state (BoxesUI* base,
                                   BoxesUIState value)
{
	BoxesIconView* self;
#line 12 "/home/fborges/checkout/gnome-boxes/src/icon-view.vala"
	self = (BoxesIconView*) base;
#line 12 "/home/fborges/checkout/gnome-boxes/src/icon-view.vala"
	if (boxes_icon_view_real_get_ui_state (base) != value) {
#line 12 "/home/fborges/checkout/gnome-boxes/src/icon-view.vala"
		self->priv->_ui_state = value;
#line 12 "/home/fborges/checkout/gnome-boxes/src/icon-view.vala"
		g_object_notify_by_pspec ((GObject *) self, boxes_icon_view_properties[BOXES_ICON_VIEW_UI_STATE_PROPERTY]);
#line 2106 "icon-view.c"
	}
}


static BoxesCollectionFilter*
boxes_icon_view_real_get_filter (BoxesICollectionView* base)
{
	BoxesCollectionFilter* result;
	BoxesIconView* self;
	BoxesCollectionFilter* _tmp0_;
#line 14 "/home/fborges/checkout/gnome-boxes/src/icon-view.vala"
	self = (BoxesIconView*) base;
#line 14 "/home/fborges/checkout/gnome-boxes/src/icon-view.vala"
	_tmp0_ = self->priv->_filter;
#line 14 "/home/fborges/checkout/gnome-boxes/src/icon-view.vala"
	result = _tmp0_;
#line 14 "/home/fborges/checkout/gnome-boxes/src/icon-view.vala"
	return result;
#line 2125 "icon-view.c"
}


static void
boxes_icon_view_real_set_filter (BoxesICollectionView* base,
                                 BoxesCollectionFilter* value)
{
	BoxesIconView* self;
#line 14 "/home/fborges/checkout/gnome-boxes/src/icon-view.vala"
	self = (BoxesIconView*) base;
#line 14 "/home/fborges/checkout/gnome-boxes/src/icon-view.vala"
	if (boxes_icon_view_real_get_filter (base) != value) {
#line 2138 "icon-view.c"
		BoxesCollectionFilter* _tmp0_;
#line 14 "/home/fborges/checkout/gnome-boxes/src/icon-view.vala"
		_tmp0_ = _g_object_ref0 (value);
#line 14 "/home/fborges/checkout/gnome-boxes/src/icon-view.vala"
		_g_object_unref0 (self->priv->_filter);
#line 14 "/home/fborges/checkout/gnome-boxes/src/icon-view.vala"
		self->priv->_filter = _tmp0_;
#line 14 "/home/fborges/checkout/gnome-boxes/src/icon-view.vala"
		g_object_notify_by_pspec ((GObject *) self, boxes_icon_view_properties[BOXES_ICON_VIEW_FILTER_PROPERTY]);
#line 2148 "icon-view.c"
	}
}


BoxesCategory*
boxes_icon_view_get_category (BoxesIconView* self)
{
	BoxesCategory* result;
	BoxesCategory* _tmp0_;
#line 24 "/home/fborges/checkout/gnome-boxes/src/icon-view.vala"
	g_return_val_if_fail (self != NULL, NULL);
#line 24 "/home/fborges/checkout/gnome-boxes/src/icon-view.vala"
	_tmp0_ = self->priv->_category;
#line 24 "/home/fborges/checkout/gnome-boxes/src/icon-view.vala"
	result = _tmp0_;
#line 24 "/home/fborges/checkout/gnome-boxes/src/icon-view.vala"
	return result;
#line 2166 "icon-view.c"
}


void
boxes_icon_view_set_category (BoxesIconView* self,
                              BoxesCategory* value)
{
	BoxesCategory* _tmp0_;
#line 25 "/home/fborges/checkout/gnome-boxes/src/icon-view.vala"
	g_return_if_fail (self != NULL);
#line 26 "/home/fborges/checkout/gnome-boxes/src/icon-view.vala"
	_tmp0_ = _g_object_ref0 (value);
#line 26 "/home/fborges/checkout/gnome-boxes/src/icon-view.vala"
	_g_object_unref0 (self->priv->_category);
#line 26 "/home/fborges/checkout/gnome-boxes/src/icon-view.vala"
	self->priv->_category = _tmp0_;
#line 25 "/home/fborges/checkout/gnome-boxes/src/icon-view.vala"
	g_object_notify_by_pspec ((GObject *) self, boxes_icon_view_properties[BOXES_ICON_VIEW_CATEGORY_PROPERTY]);
#line 2185 "icon-view.c"
}


static void
_boxes_icon_view___lambda244_ (BoxesIconView* self)
{
	GtkFlowBox* _tmp0_;
#line 38 "/home/fborges/checkout/gnome-boxes/src/icon-view.vala"
	_tmp0_ = self->priv->flowbox;
#line 38 "/home/fborges/checkout/gnome-boxes/src/icon-view.vala"
	gtk_flow_box_invalidate_filter (_tmp0_);
#line 2197 "icon-view.c"
}


static void
__boxes_icon_view___lambda244__g_object_notify (GObject* _sender,
                                                GParamSpec* pspec,
                                                gpointer self)
{
#line 37 "/home/fborges/checkout/gnome-boxes/src/icon-view.vala"
	_boxes_icon_view___lambda244_ ((BoxesIconView*) self);
#line 2208 "icon-view.c"
}


static void
_boxes_icon_view___lambda245_ (BoxesIconView* self)
{
	GtkFlowBox* _tmp0_;
#line 41 "/home/fborges/checkout/gnome-boxes/src/icon-view.vala"
	_tmp0_ = self->priv->flowbox;
#line 41 "/home/fborges/checkout/gnome-boxes/src/icon-view.vala"
	gtk_flow_box_invalidate_filter (_tmp0_);
#line 2220 "icon-view.c"
}


static void
__boxes_icon_view___lambda245__boxes_collection_filter_filter_func_changed (BoxesCollectionFilter* _sender,
                                                                            gpointer self)
{
#line 40 "/home/fborges/checkout/gnome-boxes/src/icon-view.vala"
	_boxes_icon_view___lambda245_ ((BoxesIconView*) self);
#line 2230 "icon-view.c"
}


static void
_boxes_icon_view_ui_state_changed_g_object_notify (GObject* _sender,
                                                   GParamSpec* pspec,
                                                   gpointer self)
{
#line 44 "/home/fborges/checkout/gnome-boxes/src/icon-view.vala"
	boxes_icon_view_ui_state_changed ((BoxesIconView*) self);
#line 2241 "icon-view.c"
}


static GObject *
boxes_icon_view_constructor (GType type,
                             guint n_construct_properties,
                             GObjectConstructParam * construct_properties)
{
	GObject * obj;
	GObjectClass * parent_class;
	BoxesIconView * self;
	BoxesCategory* _tmp0_;
	BoxesCategory* _tmp1_;
	BoxesCollectionFilter* _tmp2_;
	BoxesCollectionFilter* _tmp3_;
	BoxesCollectionFilter* _tmp4_;
	BoxesCollectionFilter* _tmp5_;
	BoxesCollectionFilter* _tmp6_;
	BoxesCollectionFilter* _tmp7_;
#line 31 "/home/fborges/checkout/gnome-boxes/src/icon-view.vala"
	parent_class = G_OBJECT_CLASS (boxes_icon_view_parent_class);
#line 31 "/home/fborges/checkout/gnome-boxes/src/icon-view.vala"
	obj = parent_class->constructor (type, n_construct_properties, construct_properties);
#line 31 "/home/fborges/checkout/gnome-boxes/src/icon-view.vala"
	self = G_TYPE_CHECK_INSTANCE_CAST (obj, BOXES_TYPE_ICON_VIEW, BoxesIconView);
#line 32 "/home/fborges/checkout/gnome-boxes/src/icon-view.vala"
	_tmp0_ = boxes_category_new (_ ("New and Recent"), BOXES_CATEGORY_KIND_NEW);
#line 32 "/home/fborges/checkout/gnome-boxes/src/icon-view.vala"
	_tmp1_ = _tmp0_;
#line 32 "/home/fborges/checkout/gnome-boxes/src/icon-view.vala"
	boxes_icon_view_set_category (self, _tmp1_);
#line 32 "/home/fborges/checkout/gnome-boxes/src/icon-view.vala"
	_g_object_unref0 (_tmp1_);
#line 34 "/home/fborges/checkout/gnome-boxes/src/icon-view.vala"
	boxes_icon_view_setup_flowbox (self);
#line 36 "/home/fborges/checkout/gnome-boxes/src/icon-view.vala"
	_tmp2_ = boxes_collection_filter_new ();
#line 36 "/home/fborges/checkout/gnome-boxes/src/icon-view.vala"
	_tmp3_ = _tmp2_;
#line 36 "/home/fborges/checkout/gnome-boxes/src/icon-view.vala"
	boxes_icollection_view_set_filter ((BoxesICollectionView*) self, _tmp3_);
#line 36 "/home/fborges/checkout/gnome-boxes/src/icon-view.vala"
	_g_object_unref0 (_tmp3_);
#line 37 "/home/fborges/checkout/gnome-boxes/src/icon-view.vala"
	_tmp4_ = boxes_icollection_view_get_filter ((BoxesICollectionView*) self);
#line 37 "/home/fborges/checkout/gnome-boxes/src/icon-view.vala"
	_tmp5_ = _tmp4_;
#line 37 "/home/fborges/checkout/gnome-boxes/src/icon-view.vala"
	g_signal_connect_object ((GObject*) _tmp5_, "notify::text", (GCallback) __boxes_icon_view___lambda244__g_object_notify, self, 0);
#line 40 "/home/fborges/checkout/gnome-boxes/src/icon-view.vala"
	_tmp6_ = boxes_icollection_view_get_filter ((BoxesICollectionView*) self);
#line 40 "/home/fborges/checkout/gnome-boxes/src/icon-view.vala"
	_tmp7_ = _tmp6_;
#line 40 "/home/fborges/checkout/gnome-boxes/src/icon-view.vala"
	g_signal_connect_object (_tmp7_, "filter-func-changed", (GCallback) __boxes_icon_view___lambda245__boxes_collection_filter_filter_func_changed, self, 0);
#line 44 "/home/fborges/checkout/gnome-boxes/src/icon-view.vala"
	g_signal_connect_object ((GObject*) self, "notify::ui-state", (GCallback) _boxes_icon_view_ui_state_changed_g_object_notify, self, 0);
#line 31 "/home/fborges/checkout/gnome-boxes/src/icon-view.vala"
	return obj;
#line 2301 "icon-view.c"
}


static void
boxes_icon_view_class_init (BoxesIconViewClass * klass)
{
	gint BoxesIconView_private_offset;
#line 10 "/home/fborges/checkout/gnome-boxes/src/icon-view.vala"
	boxes_icon_view_parent_class = g_type_class_peek_parent (klass);
#line 10 "/home/fborges/checkout/gnome-boxes/src/icon-view.vala"
	g_type_class_add_private (klass, sizeof (BoxesIconViewPrivate));
#line 10 "/home/fborges/checkout/gnome-boxes/src/icon-view.vala"
	G_OBJECT_CLASS (klass)->get_property = _vala_boxes_icon_view_get_property;
#line 10 "/home/fborges/checkout/gnome-boxes/src/icon-view.vala"
	G_OBJECT_CLASS (klass)->set_property = _vala_boxes_icon_view_set_property;
#line 10 "/home/fborges/checkout/gnome-boxes/src/icon-view.vala"
	G_OBJECT_CLASS (klass)->constructor = boxes_icon_view_constructor;
#line 10 "/home/fborges/checkout/gnome-boxes/src/icon-view.vala"
	G_OBJECT_CLASS (klass)->finalize = boxes_icon_view_finalize;
#line 10 "/home/fborges/checkout/gnome-boxes/src/icon-view.vala"
	g_object_class_install_property (G_OBJECT_CLASS (klass), BOXES_ICON_VIEW_PREVIOUS_UI_STATE_PROPERTY, boxes_icon_view_properties[BOXES_ICON_VIEW_PREVIOUS_UI_STATE_PROPERTY] = g_param_spec_enum ("previous-ui-state", "previous-ui-state", "previous-ui-state", BOXES_TYPE_UI_STATE, 0, G_PARAM_STATIC_NAME | G_PARAM_STATIC_NICK | G_PARAM_STATIC_BLURB | G_PARAM_READABLE | G_PARAM_WRITABLE));
#line 10 "/home/fborges/checkout/gnome-boxes/src/icon-view.vala"
	g_object_class_install_property (G_OBJECT_CLASS (klass), BOXES_ICON_VIEW_UI_STATE_PROPERTY, boxes_icon_view_properties[BOXES_ICON_VIEW_UI_STATE_PROPERTY] = g_param_spec_enum ("ui-state", "ui-state", "ui-state", BOXES_TYPE_UI_STATE, 0, G_PARAM_STATIC_NAME | G_PARAM_STATIC_NICK | G_PARAM_STATIC_BLURB | G_PARAM_READABLE | G_PARAM_WRITABLE));
#line 10 "/home/fborges/checkout/gnome-boxes/src/icon-view.vala"
	g_object_class_install_property (G_OBJECT_CLASS (klass), BOXES_ICON_VIEW_FILTER_PROPERTY, boxes_icon_view_properties[BOXES_ICON_VIEW_FILTER_PROPERTY] = g_param_spec_object ("filter", "filter", "filter", BOXES_TYPE_COLLECTION_FILTER, G_PARAM_STATIC_NAME | G_PARAM_STATIC_NICK | G_PARAM_STATIC_BLURB | G_PARAM_READABLE | G_PARAM_WRITABLE));
#line 10 "/home/fborges/checkout/gnome-boxes/src/icon-view.vala"
	g_object_class_install_property (G_OBJECT_CLASS (klass), BOXES_ICON_VIEW_CATEGORY_PROPERTY, boxes_icon_view_properties[BOXES_ICON_VIEW_CATEGORY_PROPERTY] = g_param_spec_object ("category", "category", "category", BOXES_TYPE_CATEGORY, G_PARAM_STATIC_NAME | G_PARAM_STATIC_NICK | G_PARAM_STATIC_BLURB | G_PARAM_READABLE | G_PARAM_WRITABLE));
#line 10 "/home/fborges/checkout/gnome-boxes/src/icon-view.vala"
	BoxesIconView_private_offset = g_type_class_get_instance_private_offset (klass);
#line 10 "/home/fborges/checkout/gnome-boxes/src/icon-view.vala"
	gtk_widget_class_set_template_from_resource (GTK_WIDGET_CLASS (klass), "/org/gnome/Boxes/ui/icon-view.ui");
#line 10 "/home/fborges/checkout/gnome-boxes/src/icon-view.vala"
	gtk_widget_class_bind_template_child_full (GTK_WIDGET_CLASS (klass), "flowbox", FALSE, BoxesIconView_private_offset + G_STRUCT_OFFSET (BoxesIconViewPrivate, flowbox));
#line 10 "/home/fborges/checkout/gnome-boxes/src/icon-view.vala"
	gtk_widget_class_bind_template_callback_full (GTK_WIDGET_CLASS (klass), "on_child_activated", G_CALLBACK(_boxes_icon_view_on_child_activated_gtk_flow_box_child_activated));
#line 10 "/home/fborges/checkout/gnome-boxes/src/icon-view.vala"
	gtk_widget_class_bind_template_callback_full (GTK_WIDGET_CLASS (klass), "on_button_press_event", G_CALLBACK(_boxes_icon_view_on_button_press_event_gtk_widget_button_release_event));
#line 10 "/home/fborges/checkout/gnome-boxes/src/icon-view.vala"
	gtk_widget_class_bind_template_callback_full (GTK_WIDGET_CLASS (klass), "on_key_press_event", G_CALLBACK(_boxes_icon_view_on_key_press_event_gtk_widget_key_press_event));
#line 2341 "icon-view.c"
}


static void
boxes_icon_view_boxes_icollection_view_interface_init (BoxesICollectionViewIface * iface)
{
#line 10 "/home/fborges/checkout/gnome-boxes/src/icon-view.vala"
	boxes_icon_view_boxes_icollection_view_parent_iface = g_type_interface_peek_parent (iface);
#line 10 "/home/fborges/checkout/gnome-boxes/src/icon-view.vala"
	iface->select_by_criteria = (void (*) (BoxesICollectionView *, BoxesSelectionCriteria)) boxes_icon_view_real_select_by_criteria;
#line 10 "/home/fborges/checkout/gnome-boxes/src/icon-view.vala"
	iface->get_selected_items = (GList* (*) (BoxesICollectionView *)) boxes_icon_view_real_get_selected_items;
#line 10 "/home/fborges/checkout/gnome-boxes/src/icon-view.vala"
	iface->activate_first_item = (void (*) (BoxesICollectionView *)) boxes_icon_view_real_activate_first_item;
#line 10 "/home/fborges/checkout/gnome-boxes/src/icon-view.vala"
	iface->unselect_all = (void (*) (BoxesICollectionView *)) boxes_icon_view_real_unselect_all;
#line 10 "/home/fborges/checkout/gnome-boxes/src/icon-view.vala"
	iface->select_all = (void (*) (BoxesICollectionView *)) boxes_icon_view_real_select_all;
#line 10 "/home/fborges/checkout/gnome-boxes/src/icon-view.vala"
	iface->get_filter = boxes_icon_view_real_get_filter;
#line 10 "/home/fborges/checkout/gnome-boxes/src/icon-view.vala"
	iface->set_filter = boxes_icon_view_real_set_filter;
#line 2364 "icon-view.c"
}


static void
boxes_icon_view_boxes_ui_interface_init (BoxesUIIface * iface)
{
#line 10 "/home/fborges/checkout/gnome-boxes/src/icon-view.vala"
	boxes_icon_view_boxes_ui_parent_iface = g_type_interface_peek_parent (iface);
#line 10 "/home/fborges/checkout/gnome-boxes/src/icon-view.vala"
	iface->get_previous_ui_state = boxes_icon_view_real_get_previous_ui_state;
#line 10 "/home/fborges/checkout/gnome-boxes/src/icon-view.vala"
	iface->set_previous_ui_state = boxes_icon_view_real_set_previous_ui_state;
#line 10 "/home/fborges/checkout/gnome-boxes/src/icon-view.vala"
	iface->get_ui_state = boxes_icon_view_real_get_ui_state;
#line 10 "/home/fborges/checkout/gnome-boxes/src/icon-view.vala"
	iface->set_ui_state = boxes_icon_view_real_set_ui_state;
#line 2381 "icon-view.c"
}


static void
boxes_icon_view_instance_init (BoxesIconView * self)
{
#line 10 "/home/fborges/checkout/gnome-boxes/src/icon-view.vala"
	self->priv = BOXES_ICON_VIEW_GET_PRIVATE (self);
#line 10 "/home/fborges/checkout/gnome-boxes/src/icon-view.vala"
	gtk_widget_init_template (GTK_WIDGET (self));
#line 2392 "icon-view.c"
}


static void
boxes_icon_view_finalize (GObject * obj)
{
	BoxesIconView * self;
#line 10 "/home/fborges/checkout/gnome-boxes/src/icon-view.vala"
	self = G_TYPE_CHECK_INSTANCE_CAST (obj, BOXES_TYPE_ICON_VIEW, BoxesIconView);
#line 14 "/home/fborges/checkout/gnome-boxes/src/icon-view.vala"
	_g_object_unref0 (self->priv->_filter);
#line 17 "/home/fborges/checkout/gnome-boxes/src/icon-view.vala"
	_g_object_unref0 (self->priv->flowbox);
#line 19 "/home/fborges/checkout/gnome-boxes/src/icon-view.vala"
	_g_object_unref0 (self->priv->window);
#line 20 "/home/fborges/checkout/gnome-boxes/src/icon-view.vala"
	_g_object_unref0 (self->priv->context_popover);
#line 22 "/home/fborges/checkout/gnome-boxes/src/icon-view.vala"
	_g_object_unref0 (self->priv->_category);
#line 10 "/home/fborges/checkout/gnome-boxes/src/icon-view.vala"
	G_OBJECT_CLASS (boxes_icon_view_parent_class)->finalize (obj);
#line 2414 "icon-view.c"
}


GType
boxes_icon_view_get_type (void)
{
	static volatile gsize boxes_icon_view_type_id__volatile = 0;
	if (g_once_init_enter (&boxes_icon_view_type_id__volatile)) {
		static const GTypeInfo g_define_type_info = { sizeof (BoxesIconViewClass), (GBaseInitFunc) NULL, (GBaseFinalizeFunc) NULL, (GClassInitFunc) boxes_icon_view_class_init, (GClassFinalizeFunc) NULL, NULL, sizeof (BoxesIconView), 0, (GInstanceInitFunc) boxes_icon_view_instance_init, NULL };
		static const GInterfaceInfo boxes_icollection_view_info = { (GInterfaceInitFunc) boxes_icon_view_boxes_icollection_view_interface_init, (GInterfaceFinalizeFunc) NULL, NULL};
		static const GInterfaceInfo boxes_ui_info = { (GInterfaceInitFunc) boxes_icon_view_boxes_ui_interface_init, (GInterfaceFinalizeFunc) NULL, NULL};
		GType boxes_icon_view_type_id;
		boxes_icon_view_type_id = g_type_register_static (gtk_scrolled_window_get_type (), "BoxesIconView", &g_define_type_info, 0);
		g_type_add_interface_static (boxes_icon_view_type_id, BOXES_TYPE_ICOLLECTION_VIEW, &boxes_icollection_view_info);
		g_type_add_interface_static (boxes_icon_view_type_id, BOXES_TYPE_UI, &boxes_ui_info);
		g_once_init_leave (&boxes_icon_view_type_id__volatile, boxes_icon_view_type_id);
	}
	return boxes_icon_view_type_id__volatile;
}


static void
_vala_boxes_icon_view_get_property (GObject * object,
                                    guint property_id,
                                    GValue * value,
                                    GParamSpec * pspec)
{
	BoxesIconView * self;
	self = G_TYPE_CHECK_INSTANCE_CAST (object, BOXES_TYPE_ICON_VIEW, BoxesIconView);
#line 10 "/home/fborges/checkout/gnome-boxes/src/icon-view.vala"
	switch (property_id) {
#line 10 "/home/fborges/checkout/gnome-boxes/src/icon-view.vala"
		case BOXES_ICON_VIEW_PREVIOUS_UI_STATE_PROPERTY:
#line 10 "/home/fborges/checkout/gnome-boxes/src/icon-view.vala"
		g_value_set_enum (value, boxes_ui_get_previous_ui_state ((BoxesUI*) self));
#line 10 "/home/fborges/checkout/gnome-boxes/src/icon-view.vala"
		break;
#line 10 "/home/fborges/checkout/gnome-boxes/src/icon-view.vala"
		case BOXES_ICON_VIEW_UI_STATE_PROPERTY:
#line 10 "/home/fborges/checkout/gnome-boxes/src/icon-view.vala"
		g_value_set_enum (value, boxes_ui_get_ui_state ((BoxesUI*) self));
#line 10 "/home/fborges/checkout/gnome-boxes/src/icon-view.vala"
		break;
#line 10 "/home/fborges/checkout/gnome-boxes/src/icon-view.vala"
		case BOXES_ICON_VIEW_FILTER_PROPERTY:
#line 10 "/home/fborges/checkout/gnome-boxes/src/icon-view.vala"
		g_value_set_object (value, boxes_icollection_view_get_filter ((BoxesICollectionView*) self));
#line 10 "/home/fborges/checkout/gnome-boxes/src/icon-view.vala"
		break;
#line 10 "/home/fborges/checkout/gnome-boxes/src/icon-view.vala"
		case BOXES_ICON_VIEW_CATEGORY_PROPERTY:
#line 10 "/home/fborges/checkout/gnome-boxes/src/icon-view.vala"
		g_value_set_object (value, boxes_icon_view_get_category (self));
#line 10 "/home/fborges/checkout/gnome-boxes/src/icon-view.vala"
		break;
#line 2470 "icon-view.c"
		default:
#line 10 "/home/fborges/checkout/gnome-boxes/src/icon-view.vala"
		G_OBJECT_WARN_INVALID_PROPERTY_ID (object, property_id, pspec);
#line 10 "/home/fborges/checkout/gnome-boxes/src/icon-view.vala"
		break;
#line 2476 "icon-view.c"
	}
}


static void
_vala_boxes_icon_view_set_property (GObject * object,
                                    guint property_id,
                                    const GValue * value,
                                    GParamSpec * pspec)
{
	BoxesIconView * self;
	self = G_TYPE_CHECK_INSTANCE_CAST (object, BOXES_TYPE_ICON_VIEW, BoxesIconView);
#line 10 "/home/fborges/checkout/gnome-boxes/src/icon-view.vala"
	switch (property_id) {
#line 10 "/home/fborges/checkout/gnome-boxes/src/icon-view.vala"
		case BOXES_ICON_VIEW_PREVIOUS_UI_STATE_PROPERTY:
#line 10 "/home/fborges/checkout/gnome-boxes/src/icon-view.vala"
		boxes_ui_set_previous_ui_state ((BoxesUI*) self, g_value_get_enum (value));
#line 10 "/home/fborges/checkout/gnome-boxes/src/icon-view.vala"
		break;
#line 10 "/home/fborges/checkout/gnome-boxes/src/icon-view.vala"
		case BOXES_ICON_VIEW_UI_STATE_PROPERTY:
#line 10 "/home/fborges/checkout/gnome-boxes/src/icon-view.vala"
		boxes_ui_set_ui_state ((BoxesUI*) self, g_value_get_enum (value));
#line 10 "/home/fborges/checkout/gnome-boxes/src/icon-view.vala"
		break;
#line 10 "/home/fborges/checkout/gnome-boxes/src/icon-view.vala"
		case BOXES_ICON_VIEW_FILTER_PROPERTY:
#line 10 "/home/fborges/checkout/gnome-boxes/src/icon-view.vala"
		boxes_icollection_view_set_filter ((BoxesICollectionView*) self, g_value_get_object (value));
#line 10 "/home/fborges/checkout/gnome-boxes/src/icon-view.vala"
		break;
#line 10 "/home/fborges/checkout/gnome-boxes/src/icon-view.vala"
		case BOXES_ICON_VIEW_CATEGORY_PROPERTY:
#line 10 "/home/fborges/checkout/gnome-boxes/src/icon-view.vala"
		boxes_icon_view_set_category (self, g_value_get_object (value));
#line 10 "/home/fborges/checkout/gnome-boxes/src/icon-view.vala"
		break;
#line 2515 "icon-view.c"
		default:
#line 10 "/home/fborges/checkout/gnome-boxes/src/icon-view.vala"
		G_OBJECT_WARN_INVALID_PROPERTY_ID (object, property_id, pspec);
#line 10 "/home/fborges/checkout/gnome-boxes/src/icon-view.vala"
		break;
#line 2521 "icon-view.c"
	}
}



