/* windowing.c generated by valac 0.56.18-dirty, the Vala compiler
 * generated from windowing.vala, do not modify */

/*
 * This file is part of budgie-desktop
 *
 * Copyright Budgie Desktop Developers
 *
 * This program is free software; you can redistribute it and/or modify
 * it under the terms of the GNU General Public License as published by
 * the Free Software Foundation; either version 2 of the License, or
 * (at your option) any later version.
 */

#include <stdlib.h>
#include <string.h>
#include <glib.h>
#include "budgie-windowing.h"
#include <libxfce4windowing/libxfce4windowing.h>
#include <gio/gio.h>
#include <glib-object.h>
#include <gio/gdesktopappinfo.h>

#define BUDGIE_WINDOWING_NOTIFICATIONS_DBUS_NAME "org.budgie_desktop.Notifications"
#define BUDGIE_WINDOWING_NOTIFICATIONS_DBUS_OBJECT_PATH "/org/budgie_desktop/Notifications"
#if !defined(VALA_STRICT_C)
#if !defined(__clang__) && defined(__GNUC__) && (__GNUC__ >= 14)
#pragma GCC diagnostic warning "-Wincompatible-pointer-types"
#elif defined(__clang__) && (__clang_major__ >= 16)
#pragma clang diagnostic ignored "-Wincompatible-function-pointer-types"
#pragma clang diagnostic ignored "-Wincompatible-pointer-types"
#endif
#endif

enum  {
	BUDGIE_WINDOWING_WINDOWING_0_PROPERTY,
	BUDGIE_WINDOWING_WINDOWING_HAS_WINDOWS_PROPERTY,
	BUDGIE_WINDOWING_WINDOWING_WINDOWS_PROPERTY,
	BUDGIE_WINDOWING_WINDOWING_SHOWING_DESKTOP_PROPERTY,
	BUDGIE_WINDOWING_WINDOWING_NUM_PROPERTIES
};
static GParamSpec* budgie_windowing_windowing_properties[BUDGIE_WINDOWING_WINDOWING_NUM_PROPERTIES];
#define _g_object_unref0(var) ((var == NULL) ? NULL : (var = (g_object_unref (var), NULL)))
#define _g_hash_table_unref0(var) ((var == NULL) ? NULL : (var = (g_hash_table_unref (var), NULL)))
#define _g_error_free0(var) ((var == NULL) ? NULL : (var = (g_error_free (var), NULL)))
#define _g_free0(var) (var = (g_free (var), NULL))
typedef struct _Block1Data Block1Data;
enum  {
	BUDGIE_WINDOWING_WINDOWING_ACTIVE_WINDOW_CHANGED_SIGNAL,
	BUDGIE_WINDOWING_WINDOWING_ACTIVE_WORKSPACE_CHANGED_SIGNAL,
	BUDGIE_WINDOWING_WINDOWING_WINDOW_GROUP_ADDED_SIGNAL,
	BUDGIE_WINDOWING_WINDOWING_WINDOW_GROUP_REMOVED_SIGNAL,
	BUDGIE_WINDOWING_WINDOWING_WINDOW_ADDED_SIGNAL,
	BUDGIE_WINDOWING_WINDOWING_WINDOW_REMOVED_SIGNAL,
	BUDGIE_WINDOWING_WINDOWING_WINDOW_STATE_CHANGED_SIGNAL,
	BUDGIE_WINDOWING_WINDOWING_WORKSPACE_CREATED_SIGNAL,
	BUDGIE_WINDOWING_WINDOWING_WORKSPACE_DESTROYED_SIGNAL,
	BUDGIE_WINDOWING_WINDOWING_DESKTOP_SHOWN_SIGNAL,
	BUDGIE_WINDOWING_WINDOWING_NUM_SIGNALS
};
static guint budgie_windowing_windowing_signals[BUDGIE_WINDOWING_WINDOWING_NUM_SIGNALS] = {0};

struct _BudgieWindowingWindowingPrivate {
	XfwScreen* screen;
	XfwWorkspaceManager* workspace_manager;
	GHashTable* applications;
	GList* fullscreen_windows;
	XfwWindow* last_active_window;
	BudgieWindowingNotificationDispatcher* dispatcher;
	GSettings* color_settings;
	GSettings* wm_settings;
	gulong night_light_setting_handler;
	gboolean pause_night_light;
	gboolean pause_notifications;
	gboolean previous_color_setting;
	gboolean is_show_desktop;
	gulong active_window_changed_id;
	GList* minimized_windows_by_show_desktop;
	gboolean _has_windows;
};

struct _Block1Data {
	int _ref_count_;
	BudgieWindowingWindowing* self;
	BudgieWindowingWindowFilter filter;
};

static gint BudgieWindowingWindowing_private_offset;
static gpointer budgie_windowing_windowing_parent_class = NULL;

static void _g_object_unref0_ (gpointer var);
static inline void _g_list_free__g_object_unref0_ (GList* self);
static void budgie_windowing_windowing_on_dbus_get (BudgieWindowingWindowing* self,
                                             GObject* object,
                                             GAsyncResult* _result_);
static void budgie_windowing_windowing_setup_workspace_listener (BudgieWindowingWindowing* self);
static void budgie_windowing_windowing_on_active_workspace_changed (BudgieWindowingWindowing* self,
                                                             XfwWorkspace* previous_workspace);
static void _budgie_windowing_windowing_on_active_workspace_changed_libxfce4windowing_workspace_group_active_workspace_changed (XfwWorkspaceGroup* _sender,
                                                                                                                         XfwWorkspace* previously_active_workspace,
                                                                                                                         gpointer self);
static void budgie_windowing_windowing_on_workspace_created (BudgieWindowingWindowing* self,
                                                      XfwWorkspace* workspace);
static void _budgie_windowing_windowing_on_workspace_created_libxfce4windowing_workspace_group_workspace_added (XfwWorkspaceGroup* _sender,
                                                                                                         XfwWorkspace* workspace,
                                                                                                         gpointer self);
static void budgie_windowing_windowing_on_workspace_destroyed (BudgieWindowingWindowing* self,
                                                        XfwWorkspace* workspace);
static void _budgie_windowing_windowing_on_workspace_destroyed_libxfce4windowing_workspace_group_workspace_removed (XfwWorkspaceGroup* _sender,
                                                                                                             XfwWorkspace* workspace,
                                                                                                             gpointer self);
static void budgie_windowing_windowing_on_active_window_changed (BudgieWindowingWindowing* self,
                                                          XfwWindow* old_window);
static gboolean budgie_windowing_windowing_should_filter_window (BudgieWindowingWindowing* self,
                                                          XfwWindow* window,
                                                          BudgieWindowingWindowFilter filter);
static void budgie_windowing_windowing_on_window_added (BudgieWindowingWindowing* self,
                                                 XfwWindow* window);
static void budgie_windowing_windowing_set_has_windows (BudgieWindowingWindowing* self,
                                                 gboolean value);
static void budgie_windowing_windowing_on_window_state_changed (BudgieWindowingWindowing* self,
                                                         XfwWindow* window,
                                                         XfwWindowState changed_mask,
                                                         XfwWindowState new_state);
static void _budgie_windowing_windowing_on_window_state_changed_budgie_windowing_window_group_window_state_changed (BudgieWindowingWindowGroup* _sender,
                                                                                                             XfwWindow* window,
                                                                                                             XfwWindowState changed_mask,
                                                                                                             XfwWindowState new_state,
                                                                                                             gpointer self);
static void budgie_windowing_windowing_on_window_removed (BudgieWindowingWindowing* self,
                                                   XfwWindow* window);
static void budgie_windowing_windowing_handle_fullscreen_changed (BudgieWindowingWindowing* self,
                                                           gboolean fullscreen);
static void budgie_windowing_windowing_night_light_enabled_changed (BudgieWindowingWindowing* self,
                                                             const gchar* key);
static void budgie_windowing_windowing_wm_settings_changed (BudgieWindowingWindowing* self,
                                                     const gchar* key);
static Block1Data* block1_data_ref (Block1Data* _data1_);
static void block1_data_unref (void * _userdata_);
static void ___lambda4_ (Block1Data* _data1_,
                  XfwWindow* window);
static void ____lambda4__gfunc (gconstpointer data,
                         gpointer self);
static gboolean ___lambda5_ (BudgieWindowingWindowing* self);
static gboolean ____lambda5__gsource_func (gpointer self);
static void g_cclosure_user_marshal_VOID__OBJECT_OBJECT (GClosure * closure,
                                                  GValue * return_value,
                                                  guint n_param_values,
                                                  const GValue * param_values,
                                                  gpointer invocation_hint,
                                                  gpointer marshal_data);
static void g_cclosure_user_marshal_VOID__OBJECT_FLAGS_FLAGS (GClosure * closure,
                                                       GValue * return_value,
                                                       guint n_param_values,
                                                       const GValue * param_values,
                                                       gpointer invocation_hint,
                                                       gpointer marshal_data);
static GObject * budgie_windowing_windowing_constructor (GType type,
                                                  guint n_construct_properties,
                                                  GObjectConstructParam * construct_properties);
static void _budgie_windowing_windowing_on_dbus_get_gasync_ready_callback (GObject* source_object,
                                                                    GAsyncResult* res,
                                                                    gpointer self);
static void _budgie_windowing_windowing_on_window_added_gfunc (gconstpointer data,
                                                        gpointer self);
static void _budgie_windowing_windowing_on_active_window_changed_libxfce4windowing_screen_active_window_changed (XfwScreen* _sender,
                                                                                                          XfwWindow* window,
                                                                                                          gpointer self);
static void _budgie_windowing_windowing_on_window_added_libxfce4windowing_screen_window_opened (XfwScreen* _sender,
                                                                                         XfwWindow* window,
                                                                                         gpointer self);
static void _budgie_windowing_windowing_on_window_removed_libxfce4windowing_screen_window_closed (XfwScreen* _sender,
                                                                                           XfwWindow* window,
                                                                                           gpointer self);
static void _budgie_windowing_windowing_night_light_enabled_changed_g_settings_changed (GSettings* _sender,
                                                                                 const gchar* key,
                                                                                 gpointer self);
static void _budgie_windowing_windowing_wm_settings_changed_g_settings_changed (GSettings* _sender,
                                                                         const gchar* key,
                                                                         gpointer self);
static void budgie_windowing_windowing_finalize (GObject * obj);
static GType budgie_windowing_windowing_get_type_once (void);
static void _vala_budgie_windowing_windowing_get_property (GObject * object,
                                                    guint property_id,
                                                    GValue * value,
                                                    GParamSpec * pspec);
static void _vala_budgie_windowing_windowing_set_property (GObject * object,
                                                    guint property_id,
                                                    const GValue * value,
                                                    GParamSpec * pspec);

/**
 * Window filter flags to control which windows are affected by operations
 */
static GType
budgie_windowing_window_filter_get_type_once (void)
{
	static const GFlagsValue values[] = {{BUDGIE_WINDOWING_WINDOW_FILTER_NONE, "BUDGIE_WINDOWING_WINDOW_FILTER_NONE", "none"}, {BUDGIE_WINDOWING_WINDOW_FILTER_SKIP_PAGER, "BUDGIE_WINDOWING_WINDOW_FILTER_SKIP_PAGER", "skip-pager"}, {BUDGIE_WINDOWING_WINDOW_FILTER_SKIP_TASKLIST, "BUDGIE_WINDOWING_WINDOW_FILTER_SKIP_TASKLIST", "skip-tasklist"}, {BUDGIE_WINDOWING_WINDOW_FILTER_MINIMIZED, "BUDGIE_WINDOWING_WINDOW_FILTER_MINIMIZED", "minimized"}, {BUDGIE_WINDOWING_WINDOW_FILTER_ALL, "BUDGIE_WINDOWING_WINDOW_FILTER_ALL", "all"}, {0, NULL, NULL}};
	GType budgie_windowing_window_filter_type_id;
	budgie_windowing_window_filter_type_id = g_flags_register_static ("BudgieWindowingWindowFilter", values);
	return budgie_windowing_window_filter_type_id;
}

GType
budgie_windowing_window_filter_get_type (void)
{
	static volatile gsize budgie_windowing_window_filter_type_id__once = 0;
	if (g_once_init_enter (&budgie_windowing_window_filter_type_id__once)) {
		GType budgie_windowing_window_filter_type_id;
		budgie_windowing_window_filter_type_id = budgie_windowing_window_filter_get_type_once ();
		g_once_init_leave (&budgie_windowing_window_filter_type_id__once, budgie_windowing_window_filter_type_id);
	}
	return budgie_windowing_window_filter_type_id__once;
}

static inline gpointer
budgie_windowing_windowing_get_instance_private (BudgieWindowingWindowing* self)
{
	return G_STRUCT_MEMBER_P (self, BudgieWindowingWindowing_private_offset);
}

static void
_g_object_unref0_ (gpointer var)
{
	(var == NULL) ? NULL : (var = (g_object_unref (var), NULL));
}

static inline void
_g_list_free__g_object_unref0_ (GList* self)
{
	g_list_free_full (self, (GDestroyNotify) _g_object_unref0_);
}

/**
 * Creates a new Windowing object. This is the entry point into
 * this library.
 */
BudgieWindowingWindowing*
budgie_windowing_windowing_construct (GType object_type)
{
	BudgieWindowingWindowing * self = NULL;
	self = (BudgieWindowingWindowing*) g_object_new (object_type, NULL);
	return self;
}

BudgieWindowingWindowing*
budgie_windowing_windowing_new (void)
{
	return budgie_windowing_windowing_construct (BUDGIE_WINDOWING_TYPE_WINDOWING);
}

static void
budgie_windowing_windowing_on_dbus_get (BudgieWindowingWindowing* self,
                                        GObject* object,
                                        GAsyncResult* _result_)
{
	GError* _inner_error0_ = NULL;
	g_return_if_fail (self != NULL);
	{
		BudgieWindowingNotificationDispatcher* _tmp0_ = NULL;
		BudgieWindowingNotificationDispatcher* _tmp1_;
		BudgieWindowingNotificationDispatcher* _tmp2_;
		BudgieWindowingNotificationDispatcher* _tmp3_;
		_tmp1_ = g_async_result_get_source_object (_result_);
		_tmp2_ = (BudgieWindowingNotificationDispatcher*) g_async_initable_new_finish ((GAsyncInitable *) _tmp1_, _result_, &_inner_error0_);
		g_object_unref (_tmp1_);
		_tmp0_ = (BudgieWindowingNotificationDispatcher*) _tmp2_;
		if (G_UNLIKELY (_inner_error0_ != NULL)) {
			goto __catch0_g_error;
		}
		_tmp3_ = _tmp0_;
		_tmp0_ = NULL;
		_g_object_unref0 (self->priv->dispatcher);
		self->priv->dispatcher = _tmp3_;
		_g_object_unref0 (_tmp0_);
	}
	goto __finally0;
	__catch0_g_error:
	{
		GError* e = NULL;
		GError* _tmp4_;
		const gchar* _tmp5_;
		e = _inner_error0_;
		_inner_error0_ = NULL;
		_tmp4_ = e;
		_tmp5_ = _tmp4_->message;
		g_critical ("windowing.vala:164: Error getting notification dispatcher: %s", _tmp5_);
		_g_error_free0 (e);
	}
	__finally0:
	if (G_UNLIKELY (_inner_error0_ != NULL)) {
		g_critical ("file %s: line %d: uncaught error: %s (%s, %d)", __FILE__, __LINE__, _inner_error0_->message, g_quark_to_string (_inner_error0_->domain), _inner_error0_->code);
		g_clear_error (&_inner_error0_);
		return;
	}
}

/**
 * Get the first workspace group. X11 has no concept of
 * workspace groups, so the first one is guaranteed to
 * be the only one.
 */
static gpointer
_g_object_ref0 (gpointer self)
{
	return self ? g_object_ref (self) : NULL;
}

XfwWorkspaceGroup*
budgie_windowing_windowing_get_workspace_group (BudgieWindowingWindowing* self)
{
	GList* groups = NULL;
	XfwWorkspaceManager* _tmp0_;
	GList* _tmp1_;
	GList* _tmp2_;
	GList* element = NULL;
	GList* _tmp3_;
	GList* _tmp4_;
	GList* _tmp5_;
	gconstpointer _tmp6_;
	XfwWorkspaceGroup* _tmp7_;
	XfwWorkspaceGroup* _tmp8_;
	XfwWorkspaceGroup* result;
	g_return_val_if_fail (self != NULL, NULL);
	_tmp0_ = self->priv->workspace_manager;
	_tmp1_ = xfw_workspace_manager_list_workspace_groups (_tmp0_);
	groups = _tmp1_;
	_tmp2_ = groups;
	if (_tmp2_ == NULL) {
		result = NULL;
		return result;
	}
	_tmp3_ = groups;
	_tmp4_ = g_list_first (_tmp3_);
	element = _tmp4_;
	_tmp5_ = element;
	_tmp6_ = _tmp5_->data;
	_tmp7_ = (XfwWorkspaceGroup*) _tmp6_;
	_tmp8_ = _g_object_ref0 (G_TYPE_CHECK_INSTANCE_TYPE (_tmp7_, xfw_workspace_group_get_type ()) ? ((XfwWorkspaceGroup*) _tmp7_) : NULL);
	result = _tmp8_;
	return result;
}

static void
_budgie_windowing_windowing_on_active_workspace_changed_libxfce4windowing_workspace_group_active_workspace_changed (XfwWorkspaceGroup* _sender,
                                                                                                                    XfwWorkspace* previously_active_workspace,
                                                                                                                    gpointer self)
{
	budgie_windowing_windowing_on_active_workspace_changed ((BudgieWindowingWindowing*) self, previously_active_workspace);
}

static void
_budgie_windowing_windowing_on_workspace_created_libxfce4windowing_workspace_group_workspace_added (XfwWorkspaceGroup* _sender,
                                                                                                    XfwWorkspace* workspace,
                                                                                                    gpointer self)
{
	budgie_windowing_windowing_on_workspace_created ((BudgieWindowingWindowing*) self, workspace);
}

static void
_budgie_windowing_windowing_on_workspace_destroyed_libxfce4windowing_workspace_group_workspace_removed (XfwWorkspaceGroup* _sender,
                                                                                                        XfwWorkspace* workspace,
                                                                                                        gpointer self)
{
	budgie_windowing_windowing_on_workspace_destroyed ((BudgieWindowingWindowing*) self, workspace);
}

static void
budgie_windowing_windowing_setup_workspace_listener (BudgieWindowingWindowing* self)
{
	XfwScreen* _tmp0_;
	XfwWorkspaceManager* _tmp1_;
	XfwWorkspaceManager* _tmp2_;
	XfwWorkspaceGroup* group = NULL;
	XfwWorkspaceGroup* _tmp3_;
	XfwWorkspaceGroup* _tmp4_;
	XfwWorkspaceGroup* _tmp5_;
	XfwWorkspaceGroup* _tmp6_;
	XfwWorkspaceGroup* _tmp7_;
	g_return_if_fail (self != NULL);
	_tmp0_ = self->priv->screen;
	_tmp1_ = xfw_screen_get_workspace_manager (_tmp0_);
	_tmp2_ = _g_object_ref0 (_tmp1_);
	_g_object_unref0 (self->priv->workspace_manager);
	self->priv->workspace_manager = _tmp2_;
	_tmp3_ = budgie_windowing_windowing_get_workspace_group (self);
	group = _tmp3_;
	_tmp4_ = group;
	if (_tmp4_ == NULL) {
		_g_object_unref0 (group);
		return;
	}
	_tmp5_ = group;
	g_signal_connect_object (_tmp5_, "active-workspace-changed", (GCallback) _budgie_windowing_windowing_on_active_workspace_changed_libxfce4windowing_workspace_group_active_workspace_changed, self, 0);
	_tmp6_ = group;
	g_signal_connect_object (_tmp6_, "workspace-added", (GCallback) _budgie_windowing_windowing_on_workspace_created_libxfce4windowing_workspace_group_workspace_added, self, 0);
	_tmp7_ = group;
	g_signal_connect_object (_tmp7_, "workspace-removed", (GCallback) _budgie_windowing_windowing_on_workspace_destroyed_libxfce4windowing_workspace_group_workspace_removed, self, 0);
	_g_object_unref0 (group);
}

static void
budgie_windowing_windowing_on_active_window_changed (BudgieWindowingWindowing* self,
                                                     XfwWindow* old_window)
{
	XfwWindow* new_window = NULL;
	XfwScreen* _tmp0_;
	XfwWindow* _tmp1_;
	XfwWindow* _tmp2_;
	XfwWindow* _tmp3_;
	GHashTable* _tmp4_;
	GList* _tmp5_;
	gboolean _tmp13_ = FALSE;
	XfwWindow* _tmp14_;
	XfwWindow* _tmp16_;
	XfwWindow* _tmp17_;
	g_return_if_fail (self != NULL);
	_tmp0_ = self->priv->screen;
	_tmp1_ = xfw_screen_get_active_window (_tmp0_);
	_tmp2_ = _g_object_ref0 (_tmp1_);
	new_window = _tmp2_;
	_tmp3_ = new_window;
	if (_tmp3_ == NULL) {
		_g_object_unref0 (new_window);
		return;
	}
	_tmp4_ = self->priv->applications;
	_tmp5_ = g_hash_table_get_values (_tmp4_);
	{
		GList* group_collection = NULL;
		GList* group_it = NULL;
		group_collection = _tmp5_;
		for (group_it = group_collection; group_it != NULL; group_it = group_it->next) {
			BudgieWindowingWindowGroup* group = NULL;
			group = (BudgieWindowingWindowGroup*) group_it->data;
			{
				BudgieWindowingWindowGroup* _tmp6_;
				XfwWindow* _tmp7_;
				gboolean _tmp10_ = FALSE;
				_tmp6_ = group;
				_tmp7_ = new_window;
				if (budgie_windowing_window_group_has_window (_tmp6_, _tmp7_)) {
					BudgieWindowingWindowGroup* _tmp8_;
					XfwWindow* _tmp9_;
					_tmp8_ = group;
					_tmp9_ = new_window;
					budgie_windowing_window_group_set_active_window (_tmp8_, _tmp9_);
				}
				if (old_window != NULL) {
					BudgieWindowingWindowGroup* _tmp11_;
					_tmp11_ = group;
					_tmp10_ = budgie_windowing_window_group_has_window (_tmp11_, old_window);
				} else {
					_tmp10_ = FALSE;
				}
				if (_tmp10_) {
					BudgieWindowingWindowGroup* _tmp12_;
					_tmp12_ = group;
					budgie_windowing_window_group_set_last_active_window (_tmp12_, old_window);
				}
			}
		}
		(group_collection == NULL) ? NULL : (group_collection = (g_list_free (group_collection), NULL));
	}
	_tmp14_ = new_window;
	if (!budgie_windowing_windowing_should_filter_window (self, _tmp14_, BUDGIE_WINDOWING_SHOW_DESKTOP_FILTER)) {
		XfwWindow* _tmp15_;
		_tmp15_ = new_window;
		_tmp13_ = !xfw_window_is_minimized (_tmp15_);
	} else {
		_tmp13_ = FALSE;
	}
	if (_tmp13_) {
		self->priv->is_show_desktop = FALSE;
		g_signal_emit (self, budgie_windowing_windowing_signals[BUDGIE_WINDOWING_WINDOWING_DESKTOP_SHOWN_SIGNAL], 0, self->priv->is_show_desktop);
	}
	_tmp16_ = _g_object_ref0 (old_window);
	_g_object_unref0 (self->priv->last_active_window);
	self->priv->last_active_window = _tmp16_;
	_tmp17_ = new_window;
	g_signal_emit (self, budgie_windowing_windowing_signals[BUDGIE_WINDOWING_WINDOWING_ACTIVE_WINDOW_CHANGED_SIGNAL], 0, old_window, _tmp17_);
	_g_object_unref0 (new_window);
}

static void
budgie_windowing_windowing_on_active_workspace_changed (BudgieWindowingWindowing* self,
                                                        XfwWorkspace* previous_workspace)
{
	g_return_if_fail (self != NULL);
	g_signal_emit (self, budgie_windowing_windowing_signals[BUDGIE_WINDOWING_WINDOWING_ACTIVE_WORKSPACE_CHANGED_SIGNAL], 0, previous_workspace);
}

static void
budgie_windowing_windowing_on_workspace_created (BudgieWindowingWindowing* self,
                                                 XfwWorkspace* workspace)
{
	g_return_if_fail (self != NULL);
	g_return_if_fail (workspace != NULL);
	g_signal_emit (self, budgie_windowing_windowing_signals[BUDGIE_WINDOWING_WINDOWING_WORKSPACE_CREATED_SIGNAL], 0, workspace);
}

static void
budgie_windowing_windowing_on_workspace_destroyed (BudgieWindowingWindowing* self,
                                                   XfwWorkspace* workspace)
{
	g_return_if_fail (self != NULL);
	g_return_if_fail (workspace != NULL);
	g_signal_emit (self, budgie_windowing_windowing_signals[BUDGIE_WINDOWING_WINDOWING_WORKSPACE_DESTROYED_SIGNAL], 0, workspace);
}

static const gchar*
string_to_string (const gchar* self)
{
	const gchar* result;
	g_return_val_if_fail (self != NULL, NULL);
	result = self;
	return result;
}

static void
_budgie_windowing_windowing_on_window_state_changed_budgie_windowing_window_group_window_state_changed (BudgieWindowingWindowGroup* _sender,
                                                                                                        XfwWindow* window,
                                                                                                        XfwWindowState changed_mask,
                                                                                                        XfwWindowState new_state,
                                                                                                        gpointer self)
{
	budgie_windowing_windowing_on_window_state_changed ((BudgieWindowingWindowing*) self, window, changed_mask, new_state);
}

static void
budgie_windowing_windowing_on_window_added (BudgieWindowingWindowing* self,
                                            XfwWindow* window)
{
	gboolean _tmp0_ = FALSE;
	XfwApplication* application = NULL;
	XfwApplication* _tmp1_;
	XfwApplication* _tmp2_;
	BudgieWindowingWindowGroup* group = NULL;
	GHashTable* _tmp3_;
	XfwApplication* _tmp4_;
	gconstpointer _tmp5_;
	BudgieWindowingWindowGroup* _tmp6_;
	BudgieWindowingWindowGroup* _tmp7_;
	XfwApplication* _tmp9_;
	const gchar* _tmp10_;
	const gchar* _tmp11_;
	gchar* _tmp12_;
	gchar* _tmp13_;
	const gchar* app_id = NULL;
	XfwApplication* _tmp14_;
	const gchar* _tmp15_;
	GDesktopAppInfo* app_info = NULL;
	const gchar* _tmp16_;
	gchar* _tmp17_;
	gchar* _tmp18_;
	GDesktopAppInfo* _tmp19_;
	GDesktopAppInfo* _tmp20_;
	XfwApplication* _tmp21_;
	GDesktopAppInfo* _tmp22_;
	BudgieWindowingWindowGroup* _tmp23_;
	BudgieWindowingWindowGroup* _tmp24_;
	BudgieWindowingWindowGroup* _tmp25_;
	GHashTable* _tmp26_;
	XfwApplication* _tmp27_;
	XfwApplication* _tmp28_;
	BudgieWindowingWindowGroup* _tmp29_;
	BudgieWindowingWindowGroup* _tmp30_;
	BudgieWindowingWindowGroup* _tmp31_;
	g_return_if_fail (self != NULL);
	g_return_if_fail (window != NULL);
	if (xfw_window_is_skip_tasklist (window)) {
		return;
	}
	if (!budgie_windowing_windowing_should_filter_window (self, window, BUDGIE_WINDOWING_SHOW_DESKTOP_FILTER)) {
		_tmp0_ = !xfw_window_is_minimized (window);
	} else {
		_tmp0_ = FALSE;
	}
	if (_tmp0_) {
		self->priv->is_show_desktop = FALSE;
		g_signal_emit (self, budgie_windowing_windowing_signals[BUDGIE_WINDOWING_WINDOWING_DESKTOP_SHOWN_SIGNAL], 0, self->priv->is_show_desktop);
	}
	g_signal_emit (self, budgie_windowing_windowing_signals[BUDGIE_WINDOWING_WINDOWING_WINDOW_ADDED_SIGNAL], 0, window);
	budgie_windowing_windowing_set_has_windows (self, TRUE);
	_tmp1_ = xfw_window_get_application (window);
	_tmp2_ = _g_object_ref0 (_tmp1_);
	application = _tmp2_;
	_tmp3_ = self->priv->applications;
	_tmp4_ = application;
	_tmp5_ = g_hash_table_lookup (_tmp3_, _tmp4_);
	_tmp6_ = _g_object_ref0 ((BudgieWindowingWindowGroup*) _tmp5_);
	group = _tmp6_;
	_tmp7_ = group;
	if (_tmp7_ != NULL) {
		BudgieWindowingWindowGroup* _tmp8_;
		_tmp8_ = group;
		budgie_windowing_window_group_add_window (_tmp8_, window);
		_g_object_unref0 (group);
		_g_object_unref0 (application);
		return;
	}
	_tmp9_ = application;
	_tmp10_ = xfw_application_get_name (_tmp9_);
	_tmp11_ = string_to_string (_tmp10_);
	_tmp12_ = g_strconcat ("creating new WindowGroup for application: ", _tmp11_, NULL);
	_tmp13_ = _tmp12_;
	g_debug ("windowing.vala:254: %s", _tmp13_);
	_g_free0 (_tmp13_);
	_tmp14_ = application;
	_tmp15_ = xfw_application_get_class_id (_tmp14_);
	app_id = _tmp15_;
	_tmp16_ = app_id;
	_tmp17_ = g_strconcat (_tmp16_, ".desktop", NULL);
	_tmp18_ = _tmp17_;
	_tmp19_ = g_desktop_app_info_new (_tmp18_);
	_tmp20_ = _tmp19_;
	_g_free0 (_tmp18_);
	app_info = _tmp20_;
	_tmp21_ = application;
	_tmp22_ = app_info;
	_tmp23_ = budgie_windowing_window_group_new (_tmp21_, _tmp22_);
	_g_object_unref0 (group);
	group = _tmp23_;
	_tmp24_ = group;
	budgie_windowing_window_group_add_window (_tmp24_, window);
	_tmp25_ = group;
	g_signal_connect_object (_tmp25_, "window-state-changed", (GCallback) _budgie_windowing_windowing_on_window_state_changed_budgie_windowing_window_group_window_state_changed, self, 0);
	_tmp26_ = self->priv->applications;
	_tmp27_ = application;
	_tmp28_ = _g_object_ref0 (_tmp27_);
	_tmp29_ = group;
	_tmp30_ = _g_object_ref0 (_tmp29_);
	g_hash_table_insert (_tmp26_, _tmp28_, _tmp30_);
	_tmp31_ = group;
	g_signal_emit (self, budgie_windowing_windowing_signals[BUDGIE_WINDOWING_WINDOWING_WINDOW_GROUP_ADDED_SIGNAL], 0, _tmp31_);
	_g_object_unref0 (app_info);
	_g_object_unref0 (group);
	_g_object_unref0 (application);
}

static GList*
vala_g_list_remove_full (GList* self,
                         gconstpointer data,
                         GFreeFunc func)
{
	GList* l = NULL;
	GList* result;
	l = self;
	while (TRUE) {
		GList* _tmp0_;
		GList* _tmp1_;
		gconstpointer _tmp2_;
		_tmp0_ = l;
		if (!(_tmp0_ != NULL)) {
			break;
		}
		_tmp1_ = l;
		_tmp2_ = ((GList*) _tmp1_)->data;
		if (_tmp2_ != data) {
			GList* _tmp3_;
			GList* _tmp4_;
			_tmp3_ = l;
			_tmp4_ = ((GList*) _tmp3_)->next;
			l = _tmp4_;
		} else {
			GList* _tmp5_;
			gconstpointer _tmp6_;
			GList* _tmp7_;
			_tmp5_ = l;
			_tmp6_ = ((GList*) _tmp5_)->data;
			func (_tmp6_);
			_tmp7_ = l;
			self = g_list_delete_link (self, (GList*) _tmp7_);
			break;
		}
	}
	result = self;
	return result;
}

static void
budgie_windowing_windowing_on_window_removed (BudgieWindowingWindowing* self,
                                              XfwWindow* window)
{
	XfwScreen* _tmp0_;
	GList* _tmp1_;
	XfwApplication* application = NULL;
	XfwApplication* _tmp2_;
	XfwApplication* _tmp3_;
	BudgieWindowingWindowGroup* group = NULL;
	GHashTable* _tmp4_;
	XfwApplication* _tmp5_;
	gconstpointer _tmp6_;
	BudgieWindowingWindowGroup* _tmp7_;
	BudgieWindowingWindowGroup* _tmp8_;
	BudgieWindowingWindowGroup* _tmp9_;
	BudgieWindowingWindowGroup* _tmp10_;
	g_return_if_fail (self != NULL);
	g_return_if_fail (window != NULL);
	_tmp0_ = self->priv->screen;
	_tmp1_ = xfw_screen_get_windows (_tmp0_);
	budgie_windowing_windowing_set_has_windows (self, g_list_length (_tmp1_) > ((guint) 0));
	if (xfw_window_is_skip_tasklist (window)) {
		return;
	}
	g_signal_emit (self, budgie_windowing_windowing_signals[BUDGIE_WINDOWING_WINDOWING_WINDOW_REMOVED_SIGNAL], 0, window);
	_tmp2_ = xfw_window_get_application (window);
	_tmp3_ = _g_object_ref0 (_tmp2_);
	application = _tmp3_;
	_tmp4_ = self->priv->applications;
	_tmp5_ = application;
	_tmp6_ = g_hash_table_lookup (_tmp4_, _tmp5_);
	_tmp7_ = _g_object_ref0 ((BudgieWindowingWindowGroup*) _tmp6_);
	group = _tmp7_;
	_tmp8_ = group;
	if (_tmp8_ == NULL) {
		_g_object_unref0 (group);
		_g_object_unref0 (application);
		return;
	}
	_tmp9_ = group;
	budgie_windowing_window_group_remove_window (_tmp9_, window);
	self->priv->fullscreen_windows = vala_g_list_remove_full (self->priv->fullscreen_windows, window, _g_object_unref0_);
	_tmp10_ = group;
	if (!budgie_windowing_window_group_has_windows (_tmp10_)) {
		XfwApplication* _tmp11_;
		const gchar* _tmp12_;
		const gchar* _tmp13_;
		gchar* _tmp14_;
		gchar* _tmp15_;
		BudgieWindowingWindowGroup* _tmp16_;
		GHashTable* _tmp17_;
		XfwApplication* _tmp18_;
		_tmp11_ = application;
		_tmp12_ = xfw_application_get_name (_tmp11_);
		_tmp13_ = string_to_string (_tmp12_);
		_tmp14_ = g_strconcat ("removing WindowGroup for application: ", _tmp13_, NULL);
		_tmp15_ = _tmp14_;
		g_debug ("windowing.vala:287: %s", _tmp15_);
		_g_free0 (_tmp15_);
		_tmp16_ = group;
		g_signal_emit (self, budgie_windowing_windowing_signals[BUDGIE_WINDOWING_WINDOWING_WINDOW_GROUP_REMOVED_SIGNAL], 0, _tmp16_);
		_tmp17_ = self->priv->applications;
		_tmp18_ = application;
		g_hash_table_remove (_tmp17_, _tmp18_);
	}
	_g_object_unref0 (group);
	_g_object_unref0 (application);
}

static gchar*
bool_to_string (gboolean self)
{
	gchar* result;
	if (self) {
		gchar* _tmp0_;
		_tmp0_ = g_strdup ("true");
		result = _tmp0_;
		return result;
	} else {
		gchar* _tmp1_;
		_tmp1_ = g_strdup ("false");
		result = _tmp1_;
		return result;
	}
}

static void
budgie_windowing_windowing_on_window_state_changed (BudgieWindowingWindowing* self,
                                                    XfwWindow* window,
                                                    XfwWindowState changed_mask,
                                                    XfwWindowState new_state)
{
	gboolean _tmp0_ = FALSE;
	gboolean is_fullscreen = FALSE;
	const gchar* _tmp2_;
	const gchar* _tmp3_;
	gchar* _tmp4_;
	gchar* _tmp5_;
	gchar* _tmp6_;
	gchar* _tmp7_;
	XfwWindow* _tmp8_;
	g_return_if_fail (self != NULL);
	g_return_if_fail (window != NULL);
	g_signal_emit (self, budgie_windowing_windowing_signals[BUDGIE_WINDOWING_WINDOWING_WINDOW_STATE_CHANGED_SIGNAL], 0, window, changed_mask, new_state);
	if ((changed_mask & XFW_WINDOW_STATE_MINIMIZED) == XFW_WINDOW_STATE_MINIMIZED) {
		gboolean is_minimized = FALSE;
		is_minimized = (new_state & XFW_WINDOW_STATE_MINIMIZED) == XFW_WINDOW_STATE_MINIMIZED;
		if (!is_minimized) {
			self->priv->minimized_windows_by_show_desktop = vala_g_list_remove_full (self->priv->minimized_windows_by_show_desktop, window, _g_object_unref0_);
			if (!budgie_windowing_windowing_should_filter_window (self, window, BUDGIE_WINDOWING_SHOW_DESKTOP_FILTER)) {
				self->priv->is_show_desktop = FALSE;
				g_signal_emit (self, budgie_windowing_windowing_signals[BUDGIE_WINDOWING_WINDOWING_DESKTOP_SHOWN_SIGNAL], 0, self->priv->is_show_desktop);
			}
		}
	}
	if (!((changed_mask & XFW_WINDOW_STATE_FULLSCREEN) == XFW_WINDOW_STATE_FULLSCREEN)) {
		return;
	}
	if ((new_state & XFW_WINDOW_STATE_FULLSCREEN) == XFW_WINDOW_STATE_FULLSCREEN) {
		gboolean _tmp1_ = FALSE;
		if ((new_state & XFW_WINDOW_STATE_MINIMIZED) == XFW_WINDOW_STATE_MINIMIZED) {
			_tmp1_ = TRUE;
		} else {
			_tmp1_ = (new_state & XFW_WINDOW_STATE_SHADED) == XFW_WINDOW_STATE_SHADED;
		}
		_tmp0_ = !_tmp1_;
	} else {
		_tmp0_ = FALSE;
	}
	is_fullscreen = _tmp0_;
	_tmp2_ = xfw_window_get_name (window);
	_tmp3_ = string_to_string (_tmp2_);
	_tmp4_ = bool_to_string (is_fullscreen);
	_tmp5_ = _tmp4_;
	_tmp6_ = g_strconcat ("window '", _tmp3_, "' fullscreen changed: is fullscreen = ", _tmp5_, NULL);
	_tmp7_ = _tmp6_;
	g_debug ("windowing.vala:317: %s", _tmp7_);
	_g_free0 (_tmp7_);
	_g_free0 (_tmp5_);
	budgie_windowing_windowing_handle_fullscreen_changed (self, is_fullscreen);
	if (!is_fullscreen) {
		self->priv->fullscreen_windows = vala_g_list_remove_full (self->priv->fullscreen_windows, window, _g_object_unref0_);
		return;
	}
	_tmp8_ = _g_object_ref0 (window);
	self->priv->fullscreen_windows = g_list_append (self->priv->fullscreen_windows, _tmp8_);
}

static void
budgie_windowing_windowing_handle_fullscreen_changed (BudgieWindowingWindowing* self,
                                                      gboolean fullscreen)
{
	GSettings* _tmp0_;
	GSettings* _tmp5_;
	g_return_if_fail (self != NULL);
	_tmp0_ = self->priv->color_settings;
	g_signal_handler_block (_tmp0_, self->priv->night_light_setting_handler);
	if (fullscreen) {
		if (self->priv->pause_night_light) {
			GSettings* _tmp1_;
			_tmp1_ = self->priv->color_settings;
			g_settings_set_boolean (_tmp1_, "night-light-enabled", FALSE);
		}
		if (self->priv->pause_notifications) {
			BudgieWindowingNotificationDispatcher* _tmp2_;
			_tmp2_ = self->priv->dispatcher;
			budgie_windowing_notification_dispatcher_set_notifications_paused (_tmp2_, TRUE);
		}
	} else {
		if (self->priv->pause_night_light) {
			GSettings* _tmp3_;
			_tmp3_ = self->priv->color_settings;
			g_settings_set_boolean (_tmp3_, "night-light-enabled", self->priv->previous_color_setting);
		}
		if (self->priv->pause_notifications) {
			BudgieWindowingNotificationDispatcher* _tmp4_;
			_tmp4_ = self->priv->dispatcher;
			budgie_windowing_notification_dispatcher_set_notifications_paused (_tmp4_, FALSE);
		}
	}
	_tmp5_ = self->priv->color_settings;
	g_signal_handler_unblock (_tmp5_, self->priv->night_light_setting_handler);
}

static void
budgie_windowing_windowing_night_light_enabled_changed (BudgieWindowingWindowing* self,
                                                        const gchar* key)
{
	GSettings* _tmp0_;
	g_return_if_fail (self != NULL);
	g_return_if_fail (key != NULL);
	_tmp0_ = self->priv->color_settings;
	self->priv->previous_color_setting = g_settings_get_boolean (_tmp0_, key);
}

static void
budgie_windowing_windowing_wm_settings_changed (BudgieWindowingWindowing* self,
                                                const gchar* key)
{
	const gchar* _tmp0_;
	GQuark _tmp2_ = 0U;
	static GQuark _tmp1_label0 = 0;
	static GQuark _tmp1_label1 = 0;
	g_return_if_fail (self != NULL);
	g_return_if_fail (key != NULL);
	_tmp0_ = key;
	_tmp2_ = (NULL == _tmp0_) ? 0 : g_quark_from_string (_tmp0_);
	if (_tmp2_ == ((0 != _tmp1_label0) ? _tmp1_label0 : (_tmp1_label0 = g_quark_from_static_string ("disable-night-light-on-fullscreen")))) {
		switch (0) {
			default:
			{
				GSettings* _tmp3_;
				_tmp3_ = self->priv->wm_settings;
				self->priv->pause_night_light = g_settings_get_boolean (_tmp3_, key);
				break;
			}
		}
	} else if (_tmp2_ == ((0 != _tmp1_label1) ? _tmp1_label1 : (_tmp1_label1 = g_quark_from_static_string ("pause-notifications-on-fullscreen")))) {
		switch (0) {
			default:
			{
				GSettings* _tmp4_;
				_tmp4_ = self->priv->wm_settings;
				self->priv->pause_notifications = g_settings_get_boolean (_tmp4_, key);
				break;
			}
		}
	} else {
		switch (0) {
			default:
			{
				g_warning ("windowing.vala:373: Unknown setting changed: %s", key);
				break;
			}
		}
	}
}

static gboolean
budgie_windowing_windowing_should_filter_window (BudgieWindowingWindowing* self,
                                                 XfwWindow* window,
                                                 BudgieWindowingWindowFilter filter)
{
	gboolean _tmp0_ = FALSE;
	gboolean _tmp1_ = FALSE;
	gboolean _tmp2_ = FALSE;
	gboolean _tmp3_ = FALSE;
	gboolean result;
	g_return_val_if_fail (self != NULL, FALSE);
	if (window == NULL) {
		_tmp0_ = TRUE;
	} else {
		_tmp0_ = filter == BUDGIE_WINDOWING_WINDOW_FILTER_NONE;
	}
	if (_tmp0_) {
		result = FALSE;
		return result;
	}
	if ((filter & BUDGIE_WINDOWING_WINDOW_FILTER_SKIP_PAGER) != 0) {
		_tmp1_ = xfw_window_is_skip_pager (window);
	} else {
		_tmp1_ = FALSE;
	}
	if (_tmp1_) {
		result = TRUE;
		return result;
	}
	if ((filter & BUDGIE_WINDOWING_WINDOW_FILTER_SKIP_TASKLIST) != 0) {
		_tmp2_ = xfw_window_is_skip_tasklist (window);
	} else {
		_tmp2_ = FALSE;
	}
	if (_tmp2_) {
		result = TRUE;
		return result;
	}
	if ((filter & BUDGIE_WINDOWING_WINDOW_FILTER_MINIMIZED) != 0) {
		_tmp3_ = xfw_window_is_minimized (window);
	} else {
		_tmp3_ = FALSE;
	}
	if (_tmp3_) {
		result = TRUE;
		return result;
	}
	result = FALSE;
	return result;
}

/**
 * Toggle show desktop state
 */
void
budgie_windowing_windowing_toggle_show_desktop (BudgieWindowingWindowing* self)
{
	g_return_if_fail (self != NULL);
	self->priv->is_show_desktop = !self->priv->is_show_desktop;
	budgie_windowing_windowing_show_desktop (self, self->priv->is_show_desktop, BUDGIE_WINDOWING_SHOW_DESKTOP_FILTER);
}

/**
 * Show or hide the desktop by minimizing/unminimizing windows
 */
static Block1Data*
block1_data_ref (Block1Data* _data1_)
{
	g_atomic_int_inc (&_data1_->_ref_count_);
	return _data1_;
}

static void
block1_data_unref (void * _userdata_)
{
	Block1Data* _data1_;
	_data1_ = (Block1Data*) _userdata_;
	if (g_atomic_int_dec_and_test (&_data1_->_ref_count_)) {
		BudgieWindowingWindowing* self;
		self = _data1_->self;
		_g_object_unref0 (self);
		g_slice_free (Block1Data, _data1_);
	}
}

static void
___lambda4_ (Block1Data* _data1_,
             XfwWindow* window)
{
	BudgieWindowingWindowing* self;
	gboolean _tmp0_ = FALSE;
	XfwWindow* _tmp1_;
	GError* _inner_error0_ = NULL;
	self = _data1_->self;
	g_return_if_fail (window != NULL);
	if (budgie_windowing_windowing_should_filter_window (self, window, _data1_->filter)) {
		_tmp0_ = TRUE;
	} else {
		_tmp0_ = xfw_window_is_minimized (window);
	}
	if (_tmp0_) {
		return;
	}
	xfw_window_set_minimized (window, TRUE, &_inner_error0_);
	if (G_UNLIKELY (_inner_error0_ != NULL)) {
		g_critical ("file %s: line %d: uncaught error: %s (%s, %d)", __FILE__, __LINE__, _inner_error0_->message, g_quark_to_string (_inner_error0_->domain), _inner_error0_->code);
		g_clear_error (&_inner_error0_);
		return;
	}
	_tmp1_ = _g_object_ref0 (window);
	self->priv->minimized_windows_by_show_desktop = g_list_append (self->priv->minimized_windows_by_show_desktop, _tmp1_);
}

static void
____lambda4__gfunc (gconstpointer data,
                    gpointer self)
{
	___lambda4_ (self, (XfwWindow*) data);
}

static gboolean
___lambda5_ (BudgieWindowingWindowing* self)
{
	XfwScreen* _tmp0_;
	gboolean result;
	_tmp0_ = self->priv->screen;
	g_signal_handler_unblock (_tmp0_, self->priv->active_window_changed_id);
	result = FALSE;
	return result;
}

static gboolean
____lambda5__gsource_func (gpointer self)
{
	gboolean result;
	result = ___lambda5_ ((BudgieWindowingWindowing*) self);
	return result;
}

void
budgie_windowing_windowing_show_desktop (BudgieWindowingWindowing* self,
                                         gboolean show,
                                         BudgieWindowingWindowFilter filter)
{
	Block1Data* _data1_;
	GError* _inner_error0_ = NULL;
	g_return_if_fail (self != NULL);
	_data1_ = g_slice_new0 (Block1Data);
	_data1_->_ref_count_ = 1;
	_data1_->self = g_object_ref (self);
	_data1_->filter = filter;
	self->priv->is_show_desktop = show;
	if (show) {
		XfwScreen* _tmp0_;
		GList* _tmp1_;
		GList* _tmp2_;
		(self->priv->minimized_windows_by_show_desktop == NULL) ? NULL : (self->priv->minimized_windows_by_show_desktop = (_g_list_free__g_object_unref0_ (self->priv->minimized_windows_by_show_desktop), NULL));
		self->priv->minimized_windows_by_show_desktop = NULL;
		_tmp0_ = self->priv->screen;
		g_signal_handler_block (_tmp0_, self->priv->active_window_changed_id);
		_tmp1_ = budgie_windowing_windowing_get_windows (self);
		_tmp2_ = _tmp1_;
		g_list_foreach (_tmp2_, ____lambda4__gfunc, _data1_);
		g_timeout_add_full (G_PRIORITY_DEFAULT, (guint) 100, ____lambda5__gsource_func, g_object_ref (self), g_object_unref);
	} else {
		GList* _tmp3_;
		_tmp3_ = self->priv->minimized_windows_by_show_desktop;
		{
			GList* window_collection = NULL;
			GList* window_it = NULL;
			window_collection = _tmp3_;
			for (window_it = window_collection; window_it != NULL; window_it = window_it->next) {
				XfwWindow* _tmp4_;
				XfwWindow* window = NULL;
				_tmp4_ = _g_object_ref0 ((XfwWindow*) window_it->data);
				window = _tmp4_;
				{
					XfwWindow* _tmp5_;
					_tmp5_ = window;
					xfw_window_set_minimized (_tmp5_, FALSE, &_inner_error0_);
					if (G_UNLIKELY (_inner_error0_ != NULL)) {
						_g_object_unref0 (window);
						block1_data_unref (_data1_);
						_data1_ = NULL;
						g_critical ("file %s: line %d: uncaught error: %s (%s, %d)", __FILE__, __LINE__, _inner_error0_->message, g_quark_to_string (_inner_error0_->domain), _inner_error0_->code);
						g_clear_error (&_inner_error0_);
						return;
					}
					_g_object_unref0 (window);
				}
			}
		}
	}
	g_signal_emit (self, budgie_windowing_windowing_signals[BUDGIE_WINDOWING_WINDOWING_DESKTOP_SHOWN_SIGNAL], 0, self->priv->is_show_desktop);
	block1_data_unref (_data1_);
	_data1_ = NULL;
}

/**
 * Get the currently active window.
 *
 * Returns: the active window, or NULL
 */
XfwWindow*
budgie_windowing_windowing_get_active_window (BudgieWindowingWindowing* self)
{
	XfwScreen* _tmp0_;
	XfwWindow* _tmp1_;
	XfwWindow* result;
	g_return_val_if_fail (self != NULL, NULL);
	_tmp0_ = self->priv->screen;
	_tmp1_ = xfw_screen_get_active_window (_tmp0_);
	result = _tmp1_;
	return result;
}

/**
 * Get a list of all current #WindowGroups.
 *
 * Returns: the list of window groups
 */
GList*
budgie_windowing_windowing_get_window_groups (BudgieWindowingWindowing* self)
{
	GHashTable* _tmp0_;
	GList* _tmp1_;
	GList* result;
	g_return_val_if_fail (self != NULL, NULL);
	_tmp0_ = self->priv->applications;
	_tmp1_ = g_hash_table_get_values (_tmp0_);
	result = _tmp1_;
	return result;
}

/**
 * Get the currently active workspace.
 *
 * Returns: the active workspace, or NULL
 */
XfwWorkspace*
budgie_windowing_windowing_get_active_workspace (BudgieWindowingWindowing* self)
{
	XfwWorkspaceGroup* group = NULL;
	XfwWorkspaceGroup* _tmp0_;
	XfwWorkspaceGroup* _tmp1_;
	XfwWorkspaceGroup* _tmp2_;
	XfwWorkspace* _tmp3_;
	XfwWorkspace* _tmp4_;
	XfwWorkspace* result;
	g_return_val_if_fail (self != NULL, NULL);
	_tmp0_ = budgie_windowing_windowing_get_workspace_group (self);
	group = _tmp0_;
	_tmp1_ = group;
	if (_tmp1_ == NULL) {
		result = NULL;
		_g_object_unref0 (group);
		return result;
	}
	_tmp2_ = group;
	_tmp3_ = xfw_workspace_group_get_active_workspace (_tmp2_);
	_tmp4_ = _g_object_ref0 (_tmp3_);
	result = _tmp4_;
	_g_object_unref0 (group);
	return result;
}

gboolean
budgie_windowing_windowing_get_has_windows (BudgieWindowingWindowing* self)
{
	gboolean result;
	g_return_val_if_fail (self != NULL, FALSE);
	result = self->priv->_has_windows;
	return result;
}

static void
budgie_windowing_windowing_set_has_windows (BudgieWindowingWindowing* self,
                                            gboolean value)
{
	gboolean old_value;
	g_return_if_fail (self != NULL);
	old_value = budgie_windowing_windowing_get_has_windows (self);
	if (old_value != value) {
		self->priv->_has_windows = value;
		g_object_notify_by_pspec ((GObject *) self, budgie_windowing_windowing_properties[BUDGIE_WINDOWING_WINDOWING_HAS_WINDOWS_PROPERTY]);
	}
}

GList*
budgie_windowing_windowing_get_windows (BudgieWindowingWindowing* self)
{
	GList* result;
	XfwScreen* _tmp0_;
	GList* _tmp1_;
	g_return_val_if_fail (self != NULL, NULL);
	_tmp0_ = self->priv->screen;
	_tmp1_ = xfw_screen_get_windows (_tmp0_);
	result = _tmp1_;
	return result;
}

gboolean
budgie_windowing_windowing_get_showing_desktop (BudgieWindowingWindowing* self)
{
	gboolean result;
	g_return_val_if_fail (self != NULL, FALSE);
	result = self->priv->is_show_desktop;
	return result;
}

static void
g_cclosure_user_marshal_VOID__OBJECT_OBJECT (GClosure * closure,
                                             GValue * return_value,
                                             guint n_param_values,
                                             const GValue * param_values,
                                             gpointer invocation_hint,
                                             gpointer marshal_data)
{
	typedef void (*GMarshalFunc_VOID__OBJECT_OBJECT) (gpointer data1, gpointer arg_1, gpointer arg_2, gpointer data2);
	register GMarshalFunc_VOID__OBJECT_OBJECT callback;
	register GCClosure * cc;
	register gpointer data1;
	register gpointer data2;
	cc = (GCClosure *) closure;
	g_return_if_fail (n_param_values == 3);
	if (G_CCLOSURE_SWAP_DATA (closure)) {
		data1 = closure->data;
		data2 = param_values->data[0].v_pointer;
	} else {
		data1 = param_values->data[0].v_pointer;
		data2 = closure->data;
	}
	callback = (GMarshalFunc_VOID__OBJECT_OBJECT) (marshal_data ? marshal_data : cc->callback);
	callback (data1, g_value_get_object (param_values + 1), g_value_get_object (param_values + 2), data2);
}

static void
g_cclosure_user_marshal_VOID__OBJECT_FLAGS_FLAGS (GClosure * closure,
                                                  GValue * return_value,
                                                  guint n_param_values,
                                                  const GValue * param_values,
                                                  gpointer invocation_hint,
                                                  gpointer marshal_data)
{
	typedef void (*GMarshalFunc_VOID__OBJECT_FLAGS_FLAGS) (gpointer data1, gpointer arg_1, guint arg_2, guint arg_3, gpointer data2);
	register GMarshalFunc_VOID__OBJECT_FLAGS_FLAGS callback;
	register GCClosure * cc;
	register gpointer data1;
	register gpointer data2;
	cc = (GCClosure *) closure;
	g_return_if_fail (n_param_values == 4);
	if (G_CCLOSURE_SWAP_DATA (closure)) {
		data1 = closure->data;
		data2 = param_values->data[0].v_pointer;
	} else {
		data1 = param_values->data[0].v_pointer;
		data2 = closure->data;
	}
	callback = (GMarshalFunc_VOID__OBJECT_FLAGS_FLAGS) (marshal_data ? marshal_data : cc->callback);
	callback (data1, g_value_get_object (param_values + 1), g_value_get_flags (param_values + 2), g_value_get_flags (param_values + 3), data2);
}

static void
_budgie_windowing_windowing_on_dbus_get_gasync_ready_callback (GObject* source_object,
                                                               GAsyncResult* res,
                                                               gpointer self)
{
	budgie_windowing_windowing_on_dbus_get ((BudgieWindowingWindowing*) self, source_object, res);
	g_object_unref (self);
}

static void
_budgie_windowing_windowing_on_window_added_gfunc (gconstpointer data,
                                                   gpointer self)
{
	budgie_windowing_windowing_on_window_added ((BudgieWindowingWindowing*) self, (XfwWindow*) data);
}

static void
_budgie_windowing_windowing_on_active_window_changed_libxfce4windowing_screen_active_window_changed (XfwScreen* _sender,
                                                                                                     XfwWindow* window,
                                                                                                     gpointer self)
{
	budgie_windowing_windowing_on_active_window_changed ((BudgieWindowingWindowing*) self, window);
}

static void
_budgie_windowing_windowing_on_window_added_libxfce4windowing_screen_window_opened (XfwScreen* _sender,
                                                                                    XfwWindow* window,
                                                                                    gpointer self)
{
	budgie_windowing_windowing_on_window_added ((BudgieWindowingWindowing*) self, window);
}

static void
_budgie_windowing_windowing_on_window_removed_libxfce4windowing_screen_window_closed (XfwScreen* _sender,
                                                                                      XfwWindow* window,
                                                                                      gpointer self)
{
	budgie_windowing_windowing_on_window_removed ((BudgieWindowingWindowing*) self, window);
}

static void
_budgie_windowing_windowing_night_light_enabled_changed_g_settings_changed (GSettings* _sender,
                                                                            const gchar* key,
                                                                            gpointer self)
{
	budgie_windowing_windowing_night_light_enabled_changed ((BudgieWindowingWindowing*) self, key);
}

static void
_budgie_windowing_windowing_wm_settings_changed_g_settings_changed (GSettings* _sender,
                                                                    const gchar* key,
                                                                    gpointer self)
{
	budgie_windowing_windowing_wm_settings_changed ((BudgieWindowingWindowing*) self, key);
}

static GObject *
budgie_windowing_windowing_constructor (GType type,
                                        guint n_construct_properties,
                                        GObjectConstructParam * construct_properties)
{
	GObject * obj;
	GObjectClass * parent_class;
	BudgieWindowingWindowing * self;
	GSettings* _tmp0_;
	GSettings* _tmp1_;
	GHashFunc _tmp2_;
	GEqualFunc _tmp3_;
	GHashTable* _tmp4_;
	XfwScreen* _tmp5_;
	XfwScreen* _tmp6_;
	GList* _tmp7_;
	XfwScreen* _tmp8_;
	gulong _tmp9_;
	XfwScreen* _tmp10_;
	XfwScreen* _tmp11_;
	GSettings* _tmp12_;
	GSettings* _tmp13_;
	gulong _tmp14_;
	GSettings* _tmp15_;
	GSettings* _tmp16_;
	GSettings* _tmp17_;
	GSettings* _tmp18_;
	GError* _inner_error0_ = NULL;
	parent_class = G_OBJECT_CLASS (budgie_windowing_windowing_parent_class);
	obj = parent_class->constructor (type, n_construct_properties, construct_properties);
	self = G_TYPE_CHECK_INSTANCE_CAST (obj, BUDGIE_WINDOWING_TYPE_WINDOWING, BudgieWindowingWindowing);
	_tmp0_ = g_settings_new ("org.gnome.settings-daemon.plugins.color");
	_g_object_unref0 (self->priv->color_settings);
	self->priv->color_settings = _tmp0_;
	_tmp1_ = g_settings_new ("com.solus-project.budgie-wm");
	_g_object_unref0 (self->priv->wm_settings);
	self->priv->wm_settings = _tmp1_;
	g_async_initable_new_async (BUDGIE_WINDOWING_TYPE_NOTIFICATION_DISPATCHER_PROXY, 0, NULL, _budgie_windowing_windowing_on_dbus_get_gasync_ready_callback, g_object_ref (self), "g-flags", G_DBUS_PROXY_FLAGS_NONE, "g-name", BUDGIE_WINDOWING_NOTIFICATIONS_DBUS_NAME, "g-bus-type", G_BUS_TYPE_SESSION, "g-object-path", BUDGIE_WINDOWING_NOTIFICATIONS_DBUS_OBJECT_PATH, "g-interface-name", "org.buddiesofbudgie.budgie.Dispatcher", NULL);
	_tmp2_ = g_direct_hash;
	_tmp3_ = g_direct_equal;
	_tmp4_ = g_hash_table_new_full (_tmp2_, _tmp3_, _g_object_unref0_, _g_object_unref0_);
	_g_hash_table_unref0 (self->priv->applications);
	self->priv->applications = _tmp4_;
	(self->priv->fullscreen_windows == NULL) ? NULL : (self->priv->fullscreen_windows = (_g_list_free__g_object_unref0_ (self->priv->fullscreen_windows), NULL));
	self->priv->fullscreen_windows = NULL;
	(self->priv->minimized_windows_by_show_desktop == NULL) ? NULL : (self->priv->minimized_windows_by_show_desktop = (_g_list_free__g_object_unref0_ (self->priv->minimized_windows_by_show_desktop), NULL));
	self->priv->minimized_windows_by_show_desktop = NULL;
	_tmp5_ = xfw_screen_get_default ();
	_g_object_unref0 (self->priv->screen);
	self->priv->screen = _tmp5_;
	_tmp6_ = self->priv->screen;
	_tmp7_ = xfw_screen_get_windows (_tmp6_);
	g_list_foreach (_tmp7_, _budgie_windowing_windowing_on_window_added_gfunc, self);
	_tmp8_ = self->priv->screen;
	_tmp9_ = g_signal_connect_object (_tmp8_, "active-window-changed", (GCallback) _budgie_windowing_windowing_on_active_window_changed_libxfce4windowing_screen_active_window_changed, self, 0);
	self->priv->active_window_changed_id = _tmp9_;
	_tmp10_ = self->priv->screen;
	g_signal_connect_object (_tmp10_, "window-opened", (GCallback) _budgie_windowing_windowing_on_window_added_libxfce4windowing_screen_window_opened, self, 0);
	_tmp11_ = self->priv->screen;
	g_signal_connect_object (_tmp11_, "window-closed", (GCallback) _budgie_windowing_windowing_on_window_removed_libxfce4windowing_screen_window_closed, self, 0);
	budgie_windowing_windowing_setup_workspace_listener (self);
	_tmp12_ = self->priv->color_settings;
	self->priv->previous_color_setting = g_settings_get_boolean (_tmp12_, "night-light-enabled");
	_tmp13_ = self->priv->color_settings;
	_tmp14_ = g_signal_connect_object (_tmp13_, "changed::night-light-enabled", (GCallback) _budgie_windowing_windowing_night_light_enabled_changed_g_settings_changed, self, 0);
	self->priv->night_light_setting_handler = _tmp14_;
	_tmp15_ = self->priv->wm_settings;
	self->priv->pause_night_light = g_settings_get_boolean (_tmp15_, "disable-night-light-on-fullscreen");
	_tmp16_ = self->priv->wm_settings;
	self->priv->pause_notifications = g_settings_get_boolean (_tmp16_, "pause-notifications-on-fullscreen");
	_tmp17_ = self->priv->wm_settings;
	g_signal_connect_object (_tmp17_, "changed::disable-night-light-on-fullscreen", (GCallback) _budgie_windowing_windowing_wm_settings_changed_g_settings_changed, self, 0);
	_tmp18_ = self->priv->wm_settings;
	g_signal_connect_object (_tmp18_, "changed::pause-notifications-on-fullscreen", (GCallback) _budgie_windowing_windowing_wm_settings_changed_g_settings_changed, self, 0);
	return obj;
}

static void
budgie_windowing_windowing_class_init (BudgieWindowingWindowingClass * klass,
                                       gpointer klass_data)
{
	budgie_windowing_windowing_parent_class = g_type_class_peek_parent (klass);
	g_type_class_adjust_private_offset (klass, &BudgieWindowingWindowing_private_offset);
	G_OBJECT_CLASS (klass)->get_property = _vala_budgie_windowing_windowing_get_property;
	G_OBJECT_CLASS (klass)->set_property = _vala_budgie_windowing_windowing_set_property;
	G_OBJECT_CLASS (klass)->constructor = budgie_windowing_windowing_constructor;
	G_OBJECT_CLASS (klass)->finalize = budgie_windowing_windowing_finalize;
	g_object_class_install_property (G_OBJECT_CLASS (klass), BUDGIE_WINDOWING_WINDOWING_HAS_WINDOWS_PROPERTY, budgie_windowing_windowing_properties[BUDGIE_WINDOWING_WINDOWING_HAS_WINDOWS_PROPERTY] = g_param_spec_boolean ("has-windows", "has-windows", "has-windows", FALSE, G_PARAM_STATIC_STRINGS | G_PARAM_READABLE));
	g_object_class_install_property (G_OBJECT_CLASS (klass), BUDGIE_WINDOWING_WINDOWING_WINDOWS_PROPERTY, budgie_windowing_windowing_properties[BUDGIE_WINDOWING_WINDOWING_WINDOWS_PROPERTY] = g_param_spec_pointer ("windows", "windows", "windows", G_PARAM_STATIC_STRINGS | G_PARAM_READABLE));
	g_object_class_install_property (G_OBJECT_CLASS (klass), BUDGIE_WINDOWING_WINDOWING_SHOWING_DESKTOP_PROPERTY, budgie_windowing_windowing_properties[BUDGIE_WINDOWING_WINDOWING_SHOWING_DESKTOP_PROPERTY] = g_param_spec_boolean ("showing-desktop", "showing-desktop", "showing-desktop", FALSE, G_PARAM_STATIC_STRINGS | G_PARAM_READABLE));
	/**
	 * Emitted when the currently active window has changed.
	 */
	budgie_windowing_windowing_signals[BUDGIE_WINDOWING_WINDOWING_ACTIVE_WINDOW_CHANGED_SIGNAL] = g_signal_new ("active-window-changed", BUDGIE_WINDOWING_TYPE_WINDOWING, G_SIGNAL_RUN_LAST, 0, NULL, NULL, g_cclosure_user_marshal_VOID__OBJECT_OBJECT, G_TYPE_NONE, 2, xfw_window_get_type (), xfw_window_get_type ());
	/**
	 * Emitted when the currently active workspace has changed.
	 */
	budgie_windowing_windowing_signals[BUDGIE_WINDOWING_WINDOWING_ACTIVE_WORKSPACE_CHANGED_SIGNAL] = g_signal_new ("active-workspace-changed", BUDGIE_WINDOWING_TYPE_WINDOWING, G_SIGNAL_RUN_LAST, 0, NULL, NULL, g_cclosure_marshal_VOID__OBJECT, G_TYPE_NONE, 1, xfw_workspace_get_type ());
	/**
	 * Emitted when a WindowGroup has been created.
	 */
	budgie_windowing_windowing_signals[BUDGIE_WINDOWING_WINDOWING_WINDOW_GROUP_ADDED_SIGNAL] = g_signal_new ("window-group-added", BUDGIE_WINDOWING_TYPE_WINDOWING, G_SIGNAL_RUN_LAST, 0, NULL, NULL, g_cclosure_marshal_VOID__OBJECT, G_TYPE_NONE, 1, BUDGIE_WINDOWING_TYPE_WINDOW_GROUP);
	/**
	 * Emitted when a WindowGroup has been removed.
	 */
	budgie_windowing_windowing_signals[BUDGIE_WINDOWING_WINDOWING_WINDOW_GROUP_REMOVED_SIGNAL] = g_signal_new ("window-group-removed", BUDGIE_WINDOWING_TYPE_WINDOWING, G_SIGNAL_RUN_LAST, 0, NULL, NULL, g_cclosure_marshal_VOID__OBJECT, G_TYPE_NONE, 1, BUDGIE_WINDOWING_TYPE_WINDOW_GROUP);
	/**
	 * Emitted when a window is added to the windowing system.
	 */
	budgie_windowing_windowing_signals[BUDGIE_WINDOWING_WINDOWING_WINDOW_ADDED_SIGNAL] = g_signal_new ("window-added", BUDGIE_WINDOWING_TYPE_WINDOWING, G_SIGNAL_RUN_LAST, 0, NULL, NULL, g_cclosure_marshal_VOID__OBJECT, G_TYPE_NONE, 1, xfw_window_get_type ());
	/**
	 * Emitted when a window is removed from the windowing system.
	 */
	budgie_windowing_windowing_signals[BUDGIE_WINDOWING_WINDOWING_WINDOW_REMOVED_SIGNAL] = g_signal_new ("window-removed", BUDGIE_WINDOWING_TYPE_WINDOWING, G_SIGNAL_RUN_LAST, 0, NULL, NULL, g_cclosure_marshal_VOID__OBJECT, G_TYPE_NONE, 1, xfw_window_get_type ());
	/**
	 * Emitted when the state of a window has changed.
	 */
	budgie_windowing_windowing_signals[BUDGIE_WINDOWING_WINDOWING_WINDOW_STATE_CHANGED_SIGNAL] = g_signal_new ("window-state-changed", BUDGIE_WINDOWING_TYPE_WINDOWING, G_SIGNAL_RUN_LAST, 0, NULL, NULL, g_cclosure_user_marshal_VOID__OBJECT_FLAGS_FLAGS, G_TYPE_NONE, 3, xfw_window_get_type (), xfw_window_state_get_type (), xfw_window_state_get_type ());
	/**
	 * Emitted when a Workspace has been created.
	 */
	budgie_windowing_windowing_signals[BUDGIE_WINDOWING_WINDOWING_WORKSPACE_CREATED_SIGNAL] = g_signal_new ("workspace-created", BUDGIE_WINDOWING_TYPE_WINDOWING, G_SIGNAL_RUN_LAST, 0, NULL, NULL, g_cclosure_marshal_VOID__OBJECT, G_TYPE_NONE, 1, xfw_workspace_get_type ());
	/**
	 * Emitted when a Workspace has been destroyed.
	 */
	budgie_windowing_windowing_signals[BUDGIE_WINDOWING_WINDOWING_WORKSPACE_DESTROYED_SIGNAL] = g_signal_new ("workspace-destroyed", BUDGIE_WINDOWING_TYPE_WINDOWING, G_SIGNAL_RUN_LAST, 0, NULL, NULL, g_cclosure_marshal_VOID__OBJECT, G_TYPE_NONE, 1, xfw_workspace_get_type ());
	/**
	 * Emitted when show desktop state changes.
	 */
	budgie_windowing_windowing_signals[BUDGIE_WINDOWING_WINDOWING_DESKTOP_SHOWN_SIGNAL] = g_signal_new ("desktop-shown", BUDGIE_WINDOWING_TYPE_WINDOWING, G_SIGNAL_RUN_LAST, 0, NULL, NULL, g_cclosure_marshal_VOID__BOOLEAN, G_TYPE_NONE, 1, G_TYPE_BOOLEAN);
}

static void
budgie_windowing_windowing_instance_init (BudgieWindowingWindowing * self,
                                          gpointer klass)
{
	self->priv = budgie_windowing_windowing_get_instance_private (self);
	self->priv->is_show_desktop = FALSE;
}

static void
budgie_windowing_windowing_finalize (GObject * obj)
{
	BudgieWindowingWindowing * self;
	self = G_TYPE_CHECK_INSTANCE_CAST (obj, BUDGIE_WINDOWING_TYPE_WINDOWING, BudgieWindowingWindowing);
	_g_object_unref0 (self->priv->screen);
	_g_object_unref0 (self->priv->workspace_manager);
	_g_hash_table_unref0 (self->priv->applications);
	(self->priv->fullscreen_windows == NULL) ? NULL : (self->priv->fullscreen_windows = (_g_list_free__g_object_unref0_ (self->priv->fullscreen_windows), NULL));
	_g_object_unref0 (self->priv->last_active_window);
	_g_object_unref0 (self->priv->dispatcher);
	_g_object_unref0 (self->priv->color_settings);
	_g_object_unref0 (self->priv->wm_settings);
	(self->priv->minimized_windows_by_show_desktop == NULL) ? NULL : (self->priv->minimized_windows_by_show_desktop = (_g_list_free__g_object_unref0_ (self->priv->minimized_windows_by_show_desktop), NULL));
	G_OBJECT_CLASS (budgie_windowing_windowing_parent_class)->finalize (obj);
}

/**
 * This object keeps track of WindowGroups. It serves as the main part
 * of the Budgie windowing library.
 */
static GType
budgie_windowing_windowing_get_type_once (void)
{
	static const GTypeInfo g_define_type_info = { sizeof (BudgieWindowingWindowingClass), (GBaseInitFunc) NULL, (GBaseFinalizeFunc) NULL, (GClassInitFunc) budgie_windowing_windowing_class_init, (GClassFinalizeFunc) NULL, NULL, sizeof (BudgieWindowingWindowing), 0, (GInstanceInitFunc) budgie_windowing_windowing_instance_init, NULL };
	GType budgie_windowing_windowing_type_id;
	budgie_windowing_windowing_type_id = g_type_register_static (G_TYPE_OBJECT, "BudgieWindowingWindowing", &g_define_type_info, 0);
	BudgieWindowingWindowing_private_offset = g_type_add_instance_private (budgie_windowing_windowing_type_id, sizeof (BudgieWindowingWindowingPrivate));
	return budgie_windowing_windowing_type_id;
}

GType
budgie_windowing_windowing_get_type (void)
{
	static volatile gsize budgie_windowing_windowing_type_id__once = 0;
	if (g_once_init_enter (&budgie_windowing_windowing_type_id__once)) {
		GType budgie_windowing_windowing_type_id;
		budgie_windowing_windowing_type_id = budgie_windowing_windowing_get_type_once ();
		g_once_init_leave (&budgie_windowing_windowing_type_id__once, budgie_windowing_windowing_type_id);
	}
	return budgie_windowing_windowing_type_id__once;
}

static void
_vala_budgie_windowing_windowing_get_property (GObject * object,
                                               guint property_id,
                                               GValue * value,
                                               GParamSpec * pspec)
{
	BudgieWindowingWindowing * self;
	self = G_TYPE_CHECK_INSTANCE_CAST (object, BUDGIE_WINDOWING_TYPE_WINDOWING, BudgieWindowingWindowing);
	switch (property_id) {
		case BUDGIE_WINDOWING_WINDOWING_HAS_WINDOWS_PROPERTY:
		g_value_set_boolean (value, budgie_windowing_windowing_get_has_windows (self));
		break;
		case BUDGIE_WINDOWING_WINDOWING_WINDOWS_PROPERTY:
		g_value_set_pointer (value, budgie_windowing_windowing_get_windows (self));
		break;
		case BUDGIE_WINDOWING_WINDOWING_SHOWING_DESKTOP_PROPERTY:
		g_value_set_boolean (value, budgie_windowing_windowing_get_showing_desktop (self));
		break;
		default:
		G_OBJECT_WARN_INVALID_PROPERTY_ID (object, property_id, pspec);
		break;
	}
}

static void
_vala_budgie_windowing_windowing_set_property (GObject * object,
                                               guint property_id,
                                               const GValue * value,
                                               GParamSpec * pspec)
{
	BudgieWindowingWindowing * self;
	self = G_TYPE_CHECK_INSTANCE_CAST (object, BUDGIE_WINDOWING_TYPE_WINDOWING, BudgieWindowingWindowing);
	switch (property_id) {
		case BUDGIE_WINDOWING_WINDOWING_HAS_WINDOWS_PROPERTY:
		budgie_windowing_windowing_set_has_windows (self, g_value_get_boolean (value));
		break;
		default:
		G_OBJECT_WARN_INVALID_PROPERTY_ID (object, property_id, pspec);
		break;
	}
}

