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

/*
 * Copyright 2026 elementary, Inc. (https://elementary.io)
 * SPDX-License-Identifier: GPL-3.0-or-later
 *
 * Authored by: Leonhard Kargl <leo.kargl@proton.me>
 */

#include <glib-object.h>
#include <meta/display.h>
#include <clutter/clutter.h>
#include <meta/window.h>
#include <glib.h>
#include <meta/common.h>

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

#define GALA_TYPE_OSK_FOCUS_TRACKER (gala_osk_focus_tracker_get_type ())
#define GALA_OSK_FOCUS_TRACKER(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), GALA_TYPE_OSK_FOCUS_TRACKER, GalaOSKFocusTracker))
#define GALA_OSK_FOCUS_TRACKER_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), GALA_TYPE_OSK_FOCUS_TRACKER, GalaOSKFocusTrackerClass))
#define GALA_IS_OSK_FOCUS_TRACKER(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), GALA_TYPE_OSK_FOCUS_TRACKER))
#define GALA_IS_OSK_FOCUS_TRACKER_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), GALA_TYPE_OSK_FOCUS_TRACKER))
#define GALA_OSK_FOCUS_TRACKER_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), GALA_TYPE_OSK_FOCUS_TRACKER, GalaOSKFocusTrackerClass))

typedef struct _GalaOSKFocusTracker GalaOSKFocusTracker;
typedef struct _GalaOSKFocusTrackerClass GalaOSKFocusTrackerClass;
typedef struct _GalaOSKFocusTrackerPrivate GalaOSKFocusTrackerPrivate;

#define GALA_TYPE_INPUT_METHOD (gala_input_method_get_type ())
#define GALA_INPUT_METHOD(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), GALA_TYPE_INPUT_METHOD, GalaInputMethod))
#define GALA_INPUT_METHOD_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), GALA_TYPE_INPUT_METHOD, GalaInputMethodClass))
#define GALA_IS_INPUT_METHOD(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), GALA_TYPE_INPUT_METHOD))
#define GALA_IS_INPUT_METHOD_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), GALA_TYPE_INPUT_METHOD))
#define GALA_INPUT_METHOD_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), GALA_TYPE_INPUT_METHOD, GalaInputMethodClass))

typedef struct _GalaInputMethod GalaInputMethod;
typedef struct _GalaInputMethodClass GalaInputMethodClass;
enum  {
	GALA_OSK_FOCUS_TRACKER_0_PROPERTY,
	GALA_OSK_FOCUS_TRACKER_DISPLAY_PROPERTY,
	GALA_OSK_FOCUS_TRACKER_IM_PROPERTY,
	GALA_OSK_FOCUS_TRACKER_CURRENT_FOCUS_WINDOW_PROPERTY,
	GALA_OSK_FOCUS_TRACKER_CURRENT_MONITOR_PROPERTY,
	GALA_OSK_FOCUS_TRACKER_NUM_PROPERTIES
};
static GParamSpec* gala_osk_focus_tracker_properties[GALA_OSK_FOCUS_TRACKER_NUM_PROPERTIES];
#define _g_object_unref0(var) ((var == NULL) ? NULL : (var = (g_object_unref (var), NULL)))

struct _GalaOSKFocusTracker {
	GObject parent_instance;
	GalaOSKFocusTrackerPrivate * priv;
};

struct _GalaOSKFocusTrackerClass {
	GObjectClass parent_class;
};

struct _GalaOSKFocusTrackerPrivate {
	MetaDisplay* _display;
	GalaInputMethod* _im;
	MetaWindow* _current_focus_window;
	gint _current_monitor;
};

static gint GalaOSKFocusTracker_private_offset;
static gpointer gala_osk_focus_tracker_parent_class = NULL;

VALA_EXTERN GType gala_osk_focus_tracker_get_type (void) G_GNUC_CONST ;
G_DEFINE_AUTOPTR_CLEANUP_FUNC (GalaOSKFocusTracker, g_object_unref)
VALA_EXTERN GType gala_input_method_get_type (void) G_GNUC_CONST ;
G_DEFINE_AUTOPTR_CLEANUP_FUNC (GalaInputMethod, g_object_unref)
VALA_EXTERN GalaOSKFocusTracker* gala_osk_focus_tracker_new (MetaDisplay* display,
                                                 GalaInputMethod* im);
VALA_EXTERN GalaOSKFocusTracker* gala_osk_focus_tracker_construct (GType object_type,
                                                       MetaDisplay* display,
                                                       GalaInputMethod* im);
static void gala_osk_focus_tracker_update_current_focus_window (GalaOSKFocusTracker* self);
static MetaWindow* gala_osk_focus_tracker_calculate_current_focus_window (GalaOSKFocusTracker* self);
VALA_EXTERN MetaWindow* gala_osk_focus_tracker_get_current_focus_window (GalaOSKFocusTracker* self);
static void gala_osk_focus_tracker_set_current_focus_window (GalaOSKFocusTracker* self,
                                                      MetaWindow* value);
static MetaDisplay* gala_osk_focus_tracker_get_display (GalaOSKFocusTracker* self);
static void gala_osk_focus_tracker_set_current_monitor (GalaOSKFocusTracker* self,
                                                 gint value);
static GalaInputMethod* gala_osk_focus_tracker_get_im (GalaOSKFocusTracker* self);
VALA_EXTERN gboolean gala_input_method_get_input_panel_active (GalaInputMethod* self);
static void gala_osk_focus_tracker_set_display (GalaOSKFocusTracker* self,
                                         MetaDisplay* value);
static void gala_osk_focus_tracker_set_im (GalaOSKFocusTracker* self,
                                    GalaInputMethod* value);
VALA_EXTERN gint gala_osk_focus_tracker_get_current_monitor (GalaOSKFocusTracker* self);
static GObject * gala_osk_focus_tracker_constructor (GType type,
                                              guint n_construct_properties,
                                              GObjectConstructParam * construct_properties);
static void _gala_osk_focus_tracker_update_current_focus_window_g_object_notify (GObject* _sender,
                                                                          GParamSpec* pspec,
                                                                          gpointer self);
static void _gala_osk_focus_tracker_update_current_focus_window_meta_display_grab_op_begin (MetaDisplay* _sender,
                                                                                     MetaWindow* object,
                                                                                     MetaGrabOp p0,
                                                                                     gpointer self);
static void _gala_osk_focus_tracker_update_current_focus_window_meta_display_grab_op_end (MetaDisplay* _sender,
                                                                                   MetaWindow* object,
                                                                                   MetaGrabOp p0,
                                                                                   gpointer self);
static void gala_osk_focus_tracker_finalize (GObject * obj);
static GType gala_osk_focus_tracker_get_type_once (void);
static void _vala_gala_osk_focus_tracker_get_property (GObject * object,
                                                guint property_id,
                                                GValue * value,
                                                GParamSpec * pspec);
static void _vala_gala_osk_focus_tracker_set_property (GObject * object,
                                                guint property_id,
                                                const GValue * value,
                                                GParamSpec * pspec);

static inline gpointer
gala_osk_focus_tracker_get_instance_private (GalaOSKFocusTracker* self)
{
	return G_STRUCT_MEMBER_P (self, GalaOSKFocusTracker_private_offset);
}

GalaOSKFocusTracker*
gala_osk_focus_tracker_construct (GType object_type,
                                  MetaDisplay* display,
                                  GalaInputMethod* im)
{
	GalaOSKFocusTracker * self = NULL;
	g_return_val_if_fail (display != NULL, NULL);
	g_return_val_if_fail (im != NULL, NULL);
	self = (GalaOSKFocusTracker*) g_object_new (object_type, "display", display, "im", im, NULL);
	return self;
}

GalaOSKFocusTracker*
gala_osk_focus_tracker_new (MetaDisplay* display,
                            GalaInputMethod* im)
{
	return gala_osk_focus_tracker_construct (GALA_TYPE_OSK_FOCUS_TRACKER, display, im);
}

static void
gala_osk_focus_tracker_update_current_focus_window (GalaOSKFocusTracker* self)
{
	MetaWindow* new_focus_window = NULL;
	MetaWindow* _tmp0_;
	MetaWindow* _tmp1_;
	MetaWindow* _tmp2_;
	MetaWindow* _tmp3_;
	gint _tmp4_ = 0;
	MetaWindow* _tmp5_;
	g_return_if_fail (self != NULL);
	_tmp0_ = gala_osk_focus_tracker_calculate_current_focus_window (self);
	new_focus_window = _tmp0_;
	_tmp1_ = new_focus_window;
	_tmp2_ = self->priv->_current_focus_window;
	if (_tmp1_ == _tmp2_) {
		_g_object_unref0 (new_focus_window);
		return;
	}
	_tmp3_ = new_focus_window;
	gala_osk_focus_tracker_set_current_focus_window (self, _tmp3_);
	_tmp5_ = self->priv->_current_focus_window;
	if (_tmp5_ != NULL) {
		MetaWindow* _tmp6_;
		_tmp6_ = self->priv->_current_focus_window;
		_tmp4_ = meta_window_get_monitor (_tmp6_);
	} else {
		MetaDisplay* _tmp7_;
		_tmp7_ = self->priv->_display;
		_tmp4_ = meta_display_get_primary_monitor (_tmp7_);
	}
	gala_osk_focus_tracker_set_current_monitor (self, _tmp4_);
	_g_object_unref0 (new_focus_window);
}

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

static MetaWindow*
gala_osk_focus_tracker_calculate_current_focus_window (GalaOSKFocusTracker* self)
{
	GalaInputMethod* _tmp0_;
	gboolean _tmp1_;
	gboolean _tmp2_;
	MetaDisplay* _tmp3_;
	MetaWindow* _tmp4_;
	MetaWindow* _tmp5_;
	MetaWindow* _tmp6_;
	MetaWindow* result;
	g_return_val_if_fail (self != NULL, NULL);
	_tmp0_ = self->priv->_im;
	_tmp1_ = gala_input_method_get_input_panel_active (_tmp0_);
	_tmp2_ = _tmp1_;
	if (!_tmp2_) {
		result = NULL;
		return result;
	}
	_tmp3_ = self->priv->_display;
	_tmp4_ = meta_display_get_focus_window (_tmp3_);
	_tmp5_ = _tmp4_;
	_tmp6_ = _g_object_ref0 (_tmp5_);
	result = _tmp6_;
	return result;
}

static MetaDisplay*
gala_osk_focus_tracker_get_display (GalaOSKFocusTracker* self)
{
	MetaDisplay* result;
	MetaDisplay* _tmp0_;
	g_return_val_if_fail (self != NULL, NULL);
	_tmp0_ = self->priv->_display;
	result = _tmp0_;
	return result;
}

static void
gala_osk_focus_tracker_set_display (GalaOSKFocusTracker* self,
                                    MetaDisplay* value)
{
	MetaDisplay* old_value;
	g_return_if_fail (self != NULL);
	old_value = gala_osk_focus_tracker_get_display (self);
	if (old_value != value) {
		MetaDisplay* _tmp0_;
		_tmp0_ = _g_object_ref0 (value);
		_g_object_unref0 (self->priv->_display);
		self->priv->_display = _tmp0_;
		g_object_notify_by_pspec ((GObject *) self, gala_osk_focus_tracker_properties[GALA_OSK_FOCUS_TRACKER_DISPLAY_PROPERTY]);
	}
}

static GalaInputMethod*
gala_osk_focus_tracker_get_im (GalaOSKFocusTracker* self)
{
	GalaInputMethod* result;
	GalaInputMethod* _tmp0_;
	g_return_val_if_fail (self != NULL, NULL);
	_tmp0_ = self->priv->_im;
	result = _tmp0_;
	return result;
}

static void
gala_osk_focus_tracker_set_im (GalaOSKFocusTracker* self,
                               GalaInputMethod* value)
{
	GalaInputMethod* old_value;
	g_return_if_fail (self != NULL);
	old_value = gala_osk_focus_tracker_get_im (self);
	if (old_value != value) {
		GalaInputMethod* _tmp0_;
		_tmp0_ = _g_object_ref0 (value);
		_g_object_unref0 (self->priv->_im);
		self->priv->_im = _tmp0_;
		g_object_notify_by_pspec ((GObject *) self, gala_osk_focus_tracker_properties[GALA_OSK_FOCUS_TRACKER_IM_PROPERTY]);
	}
}

MetaWindow*
gala_osk_focus_tracker_get_current_focus_window (GalaOSKFocusTracker* self)
{
	MetaWindow* result;
	MetaWindow* _tmp0_;
	g_return_val_if_fail (self != NULL, NULL);
	_tmp0_ = self->priv->_current_focus_window;
	result = _tmp0_;
	return result;
}

static void
gala_osk_focus_tracker_set_current_focus_window (GalaOSKFocusTracker* self,
                                                 MetaWindow* value)
{
	MetaWindow* old_value;
	g_return_if_fail (self != NULL);
	old_value = gala_osk_focus_tracker_get_current_focus_window (self);
	if (old_value != value) {
		MetaWindow* _tmp0_;
		_tmp0_ = _g_object_ref0 (value);
		_g_object_unref0 (self->priv->_current_focus_window);
		self->priv->_current_focus_window = _tmp0_;
		g_object_notify_by_pspec ((GObject *) self, gala_osk_focus_tracker_properties[GALA_OSK_FOCUS_TRACKER_CURRENT_FOCUS_WINDOW_PROPERTY]);
	}
}

gint
gala_osk_focus_tracker_get_current_monitor (GalaOSKFocusTracker* self)
{
	gint result;
	g_return_val_if_fail (self != NULL, -1);
	result = self->priv->_current_monitor;
	return result;
}

static void
gala_osk_focus_tracker_set_current_monitor (GalaOSKFocusTracker* self,
                                            gint value)
{
	gint old_value;
	g_return_if_fail (self != NULL);
	old_value = gala_osk_focus_tracker_get_current_monitor (self);
	if (old_value != value) {
		self->priv->_current_monitor = value;
		g_object_notify_by_pspec ((GObject *) self, gala_osk_focus_tracker_properties[GALA_OSK_FOCUS_TRACKER_CURRENT_MONITOR_PROPERTY]);
	}
}

static void
_gala_osk_focus_tracker_update_current_focus_window_g_object_notify (GObject* _sender,
                                                                     GParamSpec* pspec,
                                                                     gpointer self)
{
	gala_osk_focus_tracker_update_current_focus_window ((GalaOSKFocusTracker*) self);
}

static void
_gala_osk_focus_tracker_update_current_focus_window_meta_display_grab_op_begin (MetaDisplay* _sender,
                                                                                MetaWindow* object,
                                                                                MetaGrabOp p0,
                                                                                gpointer self)
{
	gala_osk_focus_tracker_update_current_focus_window ((GalaOSKFocusTracker*) self);
}

static void
_gala_osk_focus_tracker_update_current_focus_window_meta_display_grab_op_end (MetaDisplay* _sender,
                                                                              MetaWindow* object,
                                                                              MetaGrabOp p0,
                                                                              gpointer self)
{
	gala_osk_focus_tracker_update_current_focus_window ((GalaOSKFocusTracker*) self);
}

static GObject *
gala_osk_focus_tracker_constructor (GType type,
                                    guint n_construct_properties,
                                    GObjectConstructParam * construct_properties)
{
	GObject * obj;
	GObjectClass * parent_class;
	GalaOSKFocusTracker * self;
	MetaDisplay* _tmp0_;
	MetaDisplay* _tmp1_;
	MetaDisplay* _tmp2_;
	GalaInputMethod* _tmp3_;
	parent_class = G_OBJECT_CLASS (gala_osk_focus_tracker_parent_class);
	obj = parent_class->constructor (type, n_construct_properties, construct_properties);
	self = G_TYPE_CHECK_INSTANCE_CAST (obj, GALA_TYPE_OSK_FOCUS_TRACKER, GalaOSKFocusTracker);
	_tmp0_ = self->priv->_display;
	g_signal_connect_object ((GObject*) _tmp0_, "notify::focus-window", (GCallback) _gala_osk_focus_tracker_update_current_focus_window_g_object_notify, self, 0);
	_tmp1_ = self->priv->_display;
	g_signal_connect_object (_tmp1_, "grab-op-begin", (GCallback) _gala_osk_focus_tracker_update_current_focus_window_meta_display_grab_op_begin, self, 0);
	_tmp2_ = self->priv->_display;
	g_signal_connect_object (_tmp2_, "grab-op-end", (GCallback) _gala_osk_focus_tracker_update_current_focus_window_meta_display_grab_op_end, self, 0);
	_tmp3_ = self->priv->_im;
	g_signal_connect_object ((GObject*) _tmp3_, "notify::input-panel-active", (GCallback) _gala_osk_focus_tracker_update_current_focus_window_g_object_notify, self, 0);
	return obj;
}

static void
gala_osk_focus_tracker_class_init (GalaOSKFocusTrackerClass * klass,
                                   gpointer klass_data)
{
	gala_osk_focus_tracker_parent_class = g_type_class_peek_parent (klass);
	g_type_class_adjust_private_offset (klass, &GalaOSKFocusTracker_private_offset);
	G_OBJECT_CLASS (klass)->get_property = _vala_gala_osk_focus_tracker_get_property;
	G_OBJECT_CLASS (klass)->set_property = _vala_gala_osk_focus_tracker_set_property;
	G_OBJECT_CLASS (klass)->constructor = gala_osk_focus_tracker_constructor;
	G_OBJECT_CLASS (klass)->finalize = gala_osk_focus_tracker_finalize;
	g_object_class_install_property (G_OBJECT_CLASS (klass), GALA_OSK_FOCUS_TRACKER_DISPLAY_PROPERTY, gala_osk_focus_tracker_properties[GALA_OSK_FOCUS_TRACKER_DISPLAY_PROPERTY] = g_param_spec_object ("display", "display", "display", meta_display_get_type (), G_PARAM_STATIC_STRINGS | G_PARAM_WRITABLE | G_PARAM_CONSTRUCT_ONLY));
	g_object_class_install_property (G_OBJECT_CLASS (klass), GALA_OSK_FOCUS_TRACKER_IM_PROPERTY, gala_osk_focus_tracker_properties[GALA_OSK_FOCUS_TRACKER_IM_PROPERTY] = g_param_spec_object ("im", "im", "im", GALA_TYPE_INPUT_METHOD, G_PARAM_STATIC_STRINGS | G_PARAM_WRITABLE | G_PARAM_CONSTRUCT_ONLY));
	/**
	     * The window that is currently actively receiving input. I.e.
	     * the input panel is actually active and the window is focused.
	     */
	g_object_class_install_property (G_OBJECT_CLASS (klass), GALA_OSK_FOCUS_TRACKER_CURRENT_FOCUS_WINDOW_PROPERTY, gala_osk_focus_tracker_properties[GALA_OSK_FOCUS_TRACKER_CURRENT_FOCUS_WINDOW_PROPERTY] = g_param_spec_object ("current-focus-window", "current-focus-window", "current-focus-window", meta_window_get_type (), G_PARAM_STATIC_STRINGS | G_PARAM_READABLE));
	g_object_class_install_property (G_OBJECT_CLASS (klass), GALA_OSK_FOCUS_TRACKER_CURRENT_MONITOR_PROPERTY, gala_osk_focus_tracker_properties[GALA_OSK_FOCUS_TRACKER_CURRENT_MONITOR_PROPERTY] = g_param_spec_int ("current-monitor", "current-monitor", "current-monitor", G_MININT, G_MAXINT, 0, G_PARAM_STATIC_STRINGS | G_PARAM_READABLE));
}

static void
gala_osk_focus_tracker_instance_init (GalaOSKFocusTracker * self,
                                      gpointer klass)
{
	self->priv = gala_osk_focus_tracker_get_instance_private (self);
}

static void
gala_osk_focus_tracker_finalize (GObject * obj)
{
	GalaOSKFocusTracker * self;
	self = G_TYPE_CHECK_INSTANCE_CAST (obj, GALA_TYPE_OSK_FOCUS_TRACKER, GalaOSKFocusTracker);
	_g_object_unref0 (self->priv->_display);
	_g_object_unref0 (self->priv->_im);
	_g_object_unref0 (self->priv->_current_focus_window);
	G_OBJECT_CLASS (gala_osk_focus_tracker_parent_class)->finalize (obj);
}

 G_GNUC_NO_INLINE static GType
gala_osk_focus_tracker_get_type_once (void)
{
	static const GTypeInfo g_define_type_info = { sizeof (GalaOSKFocusTrackerClass), (GBaseInitFunc) NULL, (GBaseFinalizeFunc) NULL, (GClassInitFunc) gala_osk_focus_tracker_class_init, (GClassFinalizeFunc) NULL, NULL, sizeof (GalaOSKFocusTracker), 0, (GInstanceInitFunc) gala_osk_focus_tracker_instance_init, NULL };
	GType gala_osk_focus_tracker_type_id;
	gala_osk_focus_tracker_type_id = g_type_register_static (G_TYPE_OBJECT, "GalaOSKFocusTracker", &g_define_type_info, G_TYPE_FLAG_NONE);
	GalaOSKFocusTracker_private_offset = g_type_add_instance_private (gala_osk_focus_tracker_type_id, sizeof (GalaOSKFocusTrackerPrivate));
	return gala_osk_focus_tracker_type_id;
}

GType
gala_osk_focus_tracker_get_type (void)
{
	static gsize gala_osk_focus_tracker_type_id__once = 0;
	if (g_once_init_enter (&gala_osk_focus_tracker_type_id__once)) {
		GType gala_osk_focus_tracker_type_id;
		gala_osk_focus_tracker_type_id = gala_osk_focus_tracker_get_type_once ();
		g_once_init_leave (&gala_osk_focus_tracker_type_id__once, gala_osk_focus_tracker_type_id);
	}
	return gala_osk_focus_tracker_type_id__once;
}

static void
_vala_gala_osk_focus_tracker_get_property (GObject * object,
                                           guint property_id,
                                           GValue * value,
                                           GParamSpec * pspec)
{
	GalaOSKFocusTracker * self;
	self = G_TYPE_CHECK_INSTANCE_CAST (object, GALA_TYPE_OSK_FOCUS_TRACKER, GalaOSKFocusTracker);
	switch (property_id) {
		case GALA_OSK_FOCUS_TRACKER_DISPLAY_PROPERTY:
		g_value_set_object (value, gala_osk_focus_tracker_get_display (self));
		break;
		case GALA_OSK_FOCUS_TRACKER_IM_PROPERTY:
		g_value_set_object (value, gala_osk_focus_tracker_get_im (self));
		break;
		case GALA_OSK_FOCUS_TRACKER_CURRENT_FOCUS_WINDOW_PROPERTY:
		g_value_set_object (value, gala_osk_focus_tracker_get_current_focus_window (self));
		break;
		case GALA_OSK_FOCUS_TRACKER_CURRENT_MONITOR_PROPERTY:
		g_value_set_int (value, gala_osk_focus_tracker_get_current_monitor (self));
		break;
		default:
		G_OBJECT_WARN_INVALID_PROPERTY_ID (object, property_id, pspec);
		break;
	}
}

static void
_vala_gala_osk_focus_tracker_set_property (GObject * object,
                                           guint property_id,
                                           const GValue * value,
                                           GParamSpec * pspec)
{
	GalaOSKFocusTracker * self;
	self = G_TYPE_CHECK_INSTANCE_CAST (object, GALA_TYPE_OSK_FOCUS_TRACKER, GalaOSKFocusTracker);
	switch (property_id) {
		case GALA_OSK_FOCUS_TRACKER_DISPLAY_PROPERTY:
		gala_osk_focus_tracker_set_display (self, g_value_get_object (value));
		break;
		case GALA_OSK_FOCUS_TRACKER_IM_PROPERTY:
		gala_osk_focus_tracker_set_im (self, g_value_get_object (value));
		break;
		case GALA_OSK_FOCUS_TRACKER_CURRENT_FOCUS_WINDOW_PROPERTY:
		gala_osk_focus_tracker_set_current_focus_window (self, g_value_get_object (value));
		break;
		case GALA_OSK_FOCUS_TRACKER_CURRENT_MONITOR_PROPERTY:
		gala_osk_focus_tracker_set_current_monitor (self, g_value_get_int (value));
		break;
		default:
		G_OBJECT_WARN_INVALID_PROPERTY_ID (object, property_id, pspec);
		break;
	}
}

