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

#include <glib-object.h>
#include <gtk/gtk.h>
#include <stdlib.h>
#include <string.h>
#include <glib.h>
#include <gee.h>
#include <adwaita.h>
#include <float.h>
#include <math.h>
#include <pango/pango.h>
#include <gdk/gdk.h>
#include <gio/gio.h>
#include <gio/gdesktopappinfo.h>
#include <graphene-gobject.h>

#define CONSTANTS_ANIMATION_DURATION ((guint) 400)
#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

typedef enum  {
	SWAY_NOTIFICATION_CENTER_NOTIFICATION_GROUP_STATE_EMPTY = 0,
	SWAY_NOTIFICATION_CENTER_NOTIFICATION_GROUP_STATE_SINLGE = 1,
	SWAY_NOTIFICATION_CENTER_NOTIFICATION_GROUP_STATE_MANY = 2
} SwayNotificationCenterNotificationGroupState;

#define SWAY_NOTIFICATION_CENTER_TYPE_NOTIFICATION_GROUP_STATE (sway_notification_center_notification_group_state_get_type ())

#define SWAY_NOTIFICATION_CENTER_TYPE_NOTIFICATION_GROUP (sway_notification_center_notification_group_get_type ())
#define SWAY_NOTIFICATION_CENTER_NOTIFICATION_GROUP(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), SWAY_NOTIFICATION_CENTER_TYPE_NOTIFICATION_GROUP, SwayNotificationCenterNotificationGroup))
#define SWAY_NOTIFICATION_CENTER_NOTIFICATION_GROUP_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), SWAY_NOTIFICATION_CENTER_TYPE_NOTIFICATION_GROUP, SwayNotificationCenterNotificationGroupClass))
#define SWAY_NOTIFICATION_CENTER_IS_NOTIFICATION_GROUP(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), SWAY_NOTIFICATION_CENTER_TYPE_NOTIFICATION_GROUP))
#define SWAY_NOTIFICATION_CENTER_IS_NOTIFICATION_GROUP_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), SWAY_NOTIFICATION_CENTER_TYPE_NOTIFICATION_GROUP))
#define SWAY_NOTIFICATION_CENTER_NOTIFICATION_GROUP_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), SWAY_NOTIFICATION_CENTER_TYPE_NOTIFICATION_GROUP, SwayNotificationCenterNotificationGroupClass))

typedef struct _SwayNotificationCenterNotificationGroup SwayNotificationCenterNotificationGroup;
typedef struct _SwayNotificationCenterNotificationGroupClass SwayNotificationCenterNotificationGroupClass;
typedef struct _SwayNotificationCenterNotificationGroupPrivate SwayNotificationCenterNotificationGroupPrivate;

#define SWAY_NOTIFICATION_CENTER_TYPE_NOTIFICATION (sway_notification_center_notification_get_type ())
#define SWAY_NOTIFICATION_CENTER_NOTIFICATION(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), SWAY_NOTIFICATION_CENTER_TYPE_NOTIFICATION, SwayNotificationCenterNotification))
#define SWAY_NOTIFICATION_CENTER_NOTIFICATION_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), SWAY_NOTIFICATION_CENTER_TYPE_NOTIFICATION, SwayNotificationCenterNotificationClass))
#define SWAY_NOTIFICATION_CENTER_IS_NOTIFICATION(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), SWAY_NOTIFICATION_CENTER_TYPE_NOTIFICATION))
#define SWAY_NOTIFICATION_CENTER_IS_NOTIFICATION_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), SWAY_NOTIFICATION_CENTER_TYPE_NOTIFICATION))
#define SWAY_NOTIFICATION_CENTER_NOTIFICATION_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), SWAY_NOTIFICATION_CENTER_TYPE_NOTIFICATION, SwayNotificationCenterNotificationClass))

typedef struct _SwayNotificationCenterNotification SwayNotificationCenterNotification;
typedef struct _SwayNotificationCenterNotificationClass SwayNotificationCenterNotificationClass;

#define SWAY_NOTIFICATION_CENTER_TYPE_NOTIFICATION_CLOSE_BUTTON (sway_notification_center_notification_close_button_get_type ())
#define SWAY_NOTIFICATION_CENTER_NOTIFICATION_CLOSE_BUTTON(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), SWAY_NOTIFICATION_CENTER_TYPE_NOTIFICATION_CLOSE_BUTTON, SwayNotificationCenterNotificationCloseButton))
#define SWAY_NOTIFICATION_CENTER_NOTIFICATION_CLOSE_BUTTON_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), SWAY_NOTIFICATION_CENTER_TYPE_NOTIFICATION_CLOSE_BUTTON, SwayNotificationCenterNotificationCloseButtonClass))
#define SWAY_NOTIFICATION_CENTER_IS_NOTIFICATION_CLOSE_BUTTON(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), SWAY_NOTIFICATION_CENTER_TYPE_NOTIFICATION_CLOSE_BUTTON))
#define SWAY_NOTIFICATION_CENTER_IS_NOTIFICATION_CLOSE_BUTTON_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), SWAY_NOTIFICATION_CENTER_TYPE_NOTIFICATION_CLOSE_BUTTON))
#define SWAY_NOTIFICATION_CENTER_NOTIFICATION_CLOSE_BUTTON_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), SWAY_NOTIFICATION_CENTER_TYPE_NOTIFICATION_CLOSE_BUTTON, SwayNotificationCenterNotificationCloseButtonClass))

typedef struct _SwayNotificationCenterNotificationCloseButton SwayNotificationCenterNotificationCloseButton;
typedef struct _SwayNotificationCenterNotificationCloseButtonClass SwayNotificationCenterNotificationCloseButtonClass;

#define TYPE_DISMISSIBLE_WIDGET (dismissible_widget_get_type ())
#define DISMISSIBLE_WIDGET(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), TYPE_DISMISSIBLE_WIDGET, DismissibleWidget))
#define DISMISSIBLE_WIDGET_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), TYPE_DISMISSIBLE_WIDGET, DismissibleWidgetClass))
#define IS_DISMISSIBLE_WIDGET(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), TYPE_DISMISSIBLE_WIDGET))
#define IS_DISMISSIBLE_WIDGET_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), TYPE_DISMISSIBLE_WIDGET))
#define DISMISSIBLE_WIDGET_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), TYPE_DISMISSIBLE_WIDGET, DismissibleWidgetClass))

typedef struct _DismissibleWidget DismissibleWidget;
typedef struct _DismissibleWidgetClass DismissibleWidgetClass;

#define SWAY_NOTIFICATION_CENTER_TYPE_EXPANDABLE_GROUP (sway_notification_center_expandable_group_get_type ())
#define SWAY_NOTIFICATION_CENTER_EXPANDABLE_GROUP(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), SWAY_NOTIFICATION_CENTER_TYPE_EXPANDABLE_GROUP, SwayNotificationCenterExpandableGroup))
#define SWAY_NOTIFICATION_CENTER_EXPANDABLE_GROUP_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), SWAY_NOTIFICATION_CENTER_TYPE_EXPANDABLE_GROUP, SwayNotificationCenterExpandableGroupClass))
#define SWAY_NOTIFICATION_CENTER_IS_EXPANDABLE_GROUP(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), SWAY_NOTIFICATION_CENTER_TYPE_EXPANDABLE_GROUP))
#define SWAY_NOTIFICATION_CENTER_IS_EXPANDABLE_GROUP_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), SWAY_NOTIFICATION_CENTER_TYPE_EXPANDABLE_GROUP))
#define SWAY_NOTIFICATION_CENTER_EXPANDABLE_GROUP_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), SWAY_NOTIFICATION_CENTER_TYPE_EXPANDABLE_GROUP, SwayNotificationCenterExpandableGroupClass))

typedef struct _SwayNotificationCenterExpandableGroup SwayNotificationCenterExpandableGroup;
typedef struct _SwayNotificationCenterExpandableGroupClass SwayNotificationCenterExpandableGroupClass;

#define TYPE_ANIMATION_VALUE_TARGET (animation_value_target_get_type ())
#define ANIMATION_VALUE_TARGET(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), TYPE_ANIMATION_VALUE_TARGET, AnimationValueTarget))
#define ANIMATION_VALUE_TARGET_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), TYPE_ANIMATION_VALUE_TARGET, AnimationValueTargetClass))
#define IS_ANIMATION_VALUE_TARGET(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), TYPE_ANIMATION_VALUE_TARGET))
#define IS_ANIMATION_VALUE_TARGET_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), TYPE_ANIMATION_VALUE_TARGET))
#define ANIMATION_VALUE_TARGET_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), TYPE_ANIMATION_VALUE_TARGET, AnimationValueTargetClass))

typedef struct _AnimationValueTarget AnimationValueTarget;
typedef struct _AnimationValueTargetClass AnimationValueTargetClass;
enum  {
	SWAY_NOTIFICATION_CENTER_NOTIFICATION_GROUP_0_PROPERTY,
	SWAY_NOTIFICATION_CENTER_NOTIFICATION_GROUP_NOTIFICATION_IDS_PROPERTY,
	SWAY_NOTIFICATION_CENTER_NOTIFICATION_GROUP_STATE_PROPERTY,
	SWAY_NOTIFICATION_CENTER_NOTIFICATION_GROUP_DISMISSED_PROPERTY,
	SWAY_NOTIFICATION_CENTER_NOTIFICATION_GROUP_DISMISSED_BY_SWIPE_PROPERTY,
	SWAY_NOTIFICATION_CENTER_NOTIFICATION_GROUP_NUM_PROPERTIES
};
static GParamSpec* sway_notification_center_notification_group_properties[SWAY_NOTIFICATION_CENTER_NOTIFICATION_GROUP_NUM_PROPERTIES];
#define _g_free0(var) (var = (g_free (var), NULL))
#define _g_object_unref0(var) ((var == NULL) ? NULL : (var = (g_object_unref (var), NULL)))
typedef void (*AnimationValueTargetcallback) (gdouble value, gpointer user_data);
#define __vala_GdkEventSequence_free0(var) ((var == NULL) ? NULL : (var = (_vala_GdkEventSequence_free (var), NULL)))
typedef struct _Block12Data Block12Data;
typedef struct _SwayNotificationCenterNotificationGroupPlayRemoveAnimationData SwayNotificationCenterNotificationGroupPlayRemoveAnimationData;

#define SWAY_NOTIFICATION_CENTER_TYPE_NOTIFY_PARAMS (sway_notification_center_notify_params_get_type ())
#define SWAY_NOTIFICATION_CENTER_NOTIFY_PARAMS(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), SWAY_NOTIFICATION_CENTER_TYPE_NOTIFY_PARAMS, SwayNotificationCenterNotifyParams))
#define SWAY_NOTIFICATION_CENTER_NOTIFY_PARAMS_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), SWAY_NOTIFICATION_CENTER_TYPE_NOTIFY_PARAMS, SwayNotificationCenterNotifyParamsClass))
#define SWAY_NOTIFICATION_CENTER_IS_NOTIFY_PARAMS(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), SWAY_NOTIFICATION_CENTER_TYPE_NOTIFY_PARAMS))
#define SWAY_NOTIFICATION_CENTER_IS_NOTIFY_PARAMS_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), SWAY_NOTIFICATION_CENTER_TYPE_NOTIFY_PARAMS))
#define SWAY_NOTIFICATION_CENTER_NOTIFY_PARAMS_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), SWAY_NOTIFICATION_CENTER_TYPE_NOTIFY_PARAMS, SwayNotificationCenterNotifyParamsClass))

typedef struct _SwayNotificationCenterNotifyParams SwayNotificationCenterNotifyParams;
typedef struct _SwayNotificationCenterNotifyParamsClass SwayNotificationCenterNotifyParamsClass;
typedef enum  {
	SWAY_NOTIFICATION_CENTER_URGENCY_LEVELS_LOW = 0,
	SWAY_NOTIFICATION_CENTER_URGENCY_LEVELS_NORMAL = 1,
	SWAY_NOTIFICATION_CENTER_URGENCY_LEVELS_CRITICAL = 2
} SwayNotificationCenterUrgencyLevels;

#define SWAY_NOTIFICATION_CENTER_TYPE_URGENCY_LEVELS (sway_notification_center_urgency_levels_get_type ())
typedef struct _SwayNotificationCenterNotificationGroupRemoveNotificationData SwayNotificationCenterNotificationGroupRemoveNotificationData;
typedef gboolean (*SwayNotificationCenterExpandableGroupWidgetFilterDelegate) (GtkWidget* widget, gpointer user_data);
typedef struct _SwayNotificationCenterNotificationGroupRemoveAllNotificationsData SwayNotificationCenterNotificationGroupRemoveAllNotificationsData;

#define SWAY_NOTIFICATION_CENTER_TYPE_NOTI_DAEMON (sway_notification_center_noti_daemon_get_type ())
#define SWAY_NOTIFICATION_CENTER_NOTI_DAEMON(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), SWAY_NOTIFICATION_CENTER_TYPE_NOTI_DAEMON, SwayNotificationCenterNotiDaemon))
#define SWAY_NOTIFICATION_CENTER_NOTI_DAEMON_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), SWAY_NOTIFICATION_CENTER_TYPE_NOTI_DAEMON, SwayNotificationCenterNotiDaemonClass))
#define SWAY_NOTIFICATION_CENTER_IS_NOTI_DAEMON(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), SWAY_NOTIFICATION_CENTER_TYPE_NOTI_DAEMON))
#define SWAY_NOTIFICATION_CENTER_IS_NOTI_DAEMON_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), SWAY_NOTIFICATION_CENTER_TYPE_NOTI_DAEMON))
#define SWAY_NOTIFICATION_CENTER_NOTI_DAEMON_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), SWAY_NOTIFICATION_CENTER_TYPE_NOTI_DAEMON, SwayNotificationCenterNotiDaemonClass))

typedef struct _SwayNotificationCenterNotiDaemon SwayNotificationCenterNotiDaemon;
typedef struct _SwayNotificationCenterNotiDaemonClass SwayNotificationCenterNotiDaemonClass;
typedef enum  {
	SWAY_NOTIFICATION_CENTER_CLOSED_REASONS_EXPIRED = 1,
	SWAY_NOTIFICATION_CENTER_CLOSED_REASONS_DISMISSED = 2,
	SWAY_NOTIFICATION_CENTER_CLOSED_REASONS_CLOSED_BY_CLOSENOTIFICATION = 3,
	SWAY_NOTIFICATION_CENTER_CLOSED_REASONS_UNDEFINED = 4
} SwayNotificationCenterClosedReasons;

#define SWAY_NOTIFICATION_CENTER_TYPE_CLOSED_REASONS (sway_notification_center_closed_reasons_get_type ())
enum  {
	SWAY_NOTIFICATION_CENTER_NOTIFICATION_GROUP_ON_EXPAND_CHANGE_SIGNAL,
	SWAY_NOTIFICATION_CENTER_NOTIFICATION_GROUP_NUM_SIGNALS
};
static guint sway_notification_center_notification_group_signals[SWAY_NOTIFICATION_CENTER_NOTIFICATION_GROUP_NUM_SIGNALS] = {0};

struct _SwayNotificationCenterNotificationGroup {
	GtkListBoxRow parent_instance;
	SwayNotificationCenterNotificationGroupPrivate * priv;
	gchar* name_id;
};

struct _SwayNotificationCenterNotificationGroupClass {
	GtkListBoxRowClass parent_class;
};

struct _SwayNotificationCenterNotificationGroupPrivate {
	GeeHashMap* _notification_ids;
	SwayNotificationCenterNotificationGroupState _state;
	gboolean _dismissed;
	gboolean _dismissed_by_swipe;
	SwayNotificationCenterNotificationCloseButton* close_button;
	DismissibleWidget* dismissible;
	SwayNotificationCenterExpandableGroup* group;
	GtkRevealer* revealer;
	GtkImage* app_icon;
	GtkLabel* app_label;
	GtkEventControllerMotion* motion_controller;
	GtkGestureClick* gesture;
	gboolean gesture_down;
	gboolean gesture_in;
	GeeHashSet* urgent_notifications;
	AnimationValueTarget* animation_target;
	AdwTimedAnimation* remove_animation;
	gulong remove_animation_done_id;
};

struct _Block12Data {
	int _ref_count_;
	SwayNotificationCenterNotificationGroup* self;
	gpointer _async_data_;
};

struct _SwayNotificationCenterNotificationGroupPlayRemoveAnimationData {
	int _state_;
	GObject* _source_object_;
	GAsyncResult* _res_;
	GTask* _async_result;
	SwayNotificationCenterNotificationGroup* self;
	gboolean transition;
	gboolean result;
	Block12Data* _data12_;
	gboolean _tmp0_;
	AdwTimedAnimation* _tmp1_;
	gulong _tmp2_;
	gdouble _tmp3_;
	AdwTimedAnimation* _tmp4_;
	AdwAnimationState _tmp5_;
	AdwAnimationState _tmp6_;
	AnimationValueTarget* _tmp7_;
	gdouble _tmp8_;
	gdouble _tmp9_;
	AdwTimedAnimation* _tmp10_;
	AdwTimedAnimation* _tmp11_;
	AdwTimedAnimation* _tmp12_;
	AdwTimedAnimation* _tmp13_;
};

struct _SwayNotificationCenterNotificationGroupRemoveNotificationData {
	int _state_;
	GObject* _source_object_;
	GAsyncResult* _res_;
	GTask* _async_result;
	SwayNotificationCenterNotificationGroup* self;
	guint32 id;
	gboolean result;
	SwayNotificationCenterNotification* notification;
	SwayNotificationCenterNotification* _tmp0_;
	SwayNotificationCenterNotification* _tmp1_;
	GeeHashSet* _tmp2_;
	SwayNotificationCenterNotification* _tmp3_;
	SwayNotificationCenterNotifyParams* _tmp4_;
	SwayNotificationCenterNotifyParams* _tmp5_;
	guint32 _tmp6_;
	guint32 _tmp7_;
	GeeHashMap* _tmp8_;
	SwayNotificationCenterNotification* _tmp9_;
	SwayNotificationCenterNotifyParams* _tmp10_;
	SwayNotificationCenterNotifyParams* _tmp11_;
	guint32 _tmp12_;
	guint32 _tmp13_;
	SwayNotificationCenterNotification* _tmp14_;
	SwayNotificationCenterNotificationGroupState _tmp15_;
	SwayNotificationCenterNotification* _tmp16_;
	gboolean _tmp17_;
	SwayNotificationCenterNotificationGroupState _tmp18_;
	SwayNotificationCenterNotification* _tmp19_;
	gboolean _tmp20_;
	gboolean _tmp21_;
	SwayNotificationCenterExpandableGroup* _tmp22_;
	SwayNotificationCenterNotification* _tmp23_;
	SwayNotificationCenterNotificationGroupState _tmp24_;
};

struct _SwayNotificationCenterNotificationGroupRemoveAllNotificationsData {
	int _state_;
	GObject* _source_object_;
	GAsyncResult* _res_;
	GTask* _async_result;
	SwayNotificationCenterNotificationGroup* self;
	gboolean transition;
	gboolean result;
	SwayNotificationCenterNotificationCloseButton* _tmp0_;
	GeeHashSet* _tmp1_;
	GeeHashMap* _tmp2_;
	gboolean dismissed_by_swipe;
	gboolean _tmp3_;
	SwayNotificationCenterNotificationGroupState _tmp4_;
	SwayNotificationCenterNotification* noti;
	SwayNotificationCenterExpandableGroup* _tmp5_;
	GtkWidget* _tmp6_;
	SwayNotificationCenterNotification* _tmp7_;
	SwayNotificationCenterNotification* _tmp8_;
	gboolean _tmp9_;
	gboolean _tmp10_;
	SwayNotificationCenterExpandableGroup* _tmp11_;
	gboolean _tmp12_;
	SwayNotificationCenterExpandableGroup* _tmp13_;
};

static gint SwayNotificationCenterNotificationGroup_private_offset;
static gpointer sway_notification_center_notification_group_parent_class = NULL;
VALA_EXTERN SwayNotificationCenterNotiDaemon* sway_notification_center_noti_daemon;

VALA_EXTERN GType sway_notification_center_notification_group_state_get_type (void) G_GNUC_CONST ;
VALA_EXTERN GType sway_notification_center_notification_group_get_type (void) G_GNUC_CONST ;
G_DEFINE_AUTOPTR_CLEANUP_FUNC (SwayNotificationCenterNotificationGroup, g_object_unref)
VALA_EXTERN GType sway_notification_center_notification_get_type (void) G_GNUC_CONST ;
G_DEFINE_AUTOPTR_CLEANUP_FUNC (SwayNotificationCenterNotification, g_object_unref)
VALA_EXTERN GType sway_notification_center_notification_close_button_get_type (void) G_GNUC_CONST ;
G_DEFINE_AUTOPTR_CLEANUP_FUNC (SwayNotificationCenterNotificationCloseButton, g_object_unref)
VALA_EXTERN GType dismissible_widget_get_type (void) G_GNUC_CONST ;
G_DEFINE_AUTOPTR_CLEANUP_FUNC (DismissibleWidget, g_object_unref)
VALA_EXTERN GType sway_notification_center_expandable_group_get_type (void) G_GNUC_CONST ;
G_DEFINE_AUTOPTR_CLEANUP_FUNC (SwayNotificationCenterExpandableGroup, g_object_unref)
VALA_EXTERN GType animation_value_target_get_type (void) G_GNUC_CONST ;
G_DEFINE_AUTOPTR_CLEANUP_FUNC (AnimationValueTarget, g_object_unref)
VALA_EXTERN SwayNotificationCenterNotificationGroup* sway_notification_center_notification_group_new (const gchar* name_id,
                                                                                          const gchar* display_name,
                                                                                          GtkViewport* viewport);
VALA_EXTERN SwayNotificationCenterNotificationGroup* sway_notification_center_notification_group_construct (GType object_type,
                                                                                                const gchar* name_id,
                                                                                                const gchar* display_name,
                                                                                                GtkViewport* viewport);
static void sway_notification_center_notification_group_animation_value_changed (SwayNotificationCenterNotificationGroup* self,
                                                                          gdouble progress);
static void _sway_notification_center_notification_group_animation_value_changed_animation_value_targetcallback (gdouble value,
                                                                                                          gpointer self);
VALA_EXTERN AnimationValueTarget* animation_value_target_new (gfloat init_value,
                                                  AnimationValueTargetcallback cb,
                                                  gpointer cb_target);
VALA_EXTERN AnimationValueTarget* animation_value_target_construct (GType object_type,
                                                        gfloat init_value,
                                                        AnimationValueTargetcallback cb,
                                                        gpointer cb_target);
VALA_EXTERN AdwPropertyAnimationTarget* animation_value_target_get_animation_target (AnimationValueTarget* self);
VALA_EXTERN DismissibleWidget* dismissible_widget_new (void);
VALA_EXTERN DismissibleWidget* dismissible_widget_construct (GType object_type);
static void __lambda21_ (SwayNotificationCenterNotificationGroup* self);
static void sway_notification_center_notification_group_set_dismissed_by_swipe (SwayNotificationCenterNotificationGroup* self,
                                                                         gboolean value);
VALA_EXTERN void sway_notification_center_notification_group_request_dismiss_all_notifications (SwayNotificationCenterNotificationGroup* self);
static void ___lambda21__dismissible_widget_dismissed (DismissibleWidget* _sender,
                                                gpointer self);
VALA_EXTERN void dismissible_widget_set_child (DismissibleWidget* self,
                                   GtkWidget* value);
VALA_EXTERN SwayNotificationCenterNotificationCloseButton* sway_notification_center_notification_close_button_new (void);
VALA_EXTERN SwayNotificationCenterNotificationCloseButton* sway_notification_center_notification_close_button_construct (GType object_type);
static void _sway_notification_center_notification_group_request_dismiss_all_notifications_sway_notification_center_notification_close_button_clicked (SwayNotificationCenterNotificationCloseButton* _sender,
                                                                                                                                                gpointer self);
static void __lambda25_ (SwayNotificationCenterNotificationGroup* self);
VALA_EXTERN void sway_notification_center_notification_group_set_expanded (SwayNotificationCenterNotificationGroup* self,
                                                               gboolean state);
static void ___lambda25__gtk_button_clicked (GtkButton* _sender,
                                      gpointer self);
static void __lambda26_ (SwayNotificationCenterNotificationGroup* self);
static void ___lambda26__gtk_button_clicked (GtkButton* _sender,
                                      gpointer self);
VALA_EXTERN SwayNotificationCenterExpandableGroup* sway_notification_center_expandable_group_new (GtkViewport* viewport,
                                                                                      guint animation_duration);
VALA_EXTERN SwayNotificationCenterExpandableGroup* sway_notification_center_expandable_group_construct (GType object_type,
                                                                                            GtkViewport* viewport,
                                                                                            guint animation_duration);
static void sway_notification_center_notification_group_update_state (SwayNotificationCenterNotificationGroup* self);
static void _sway_notification_center_notification_group_update_state_g_object_notify (GObject* _sender,
                                                                                GParamSpec* pspec,
                                                                                gpointer self);
static void __lambda27_ (SwayNotificationCenterNotificationGroup* self,
                  GtkGestureClick* _gesture,
                  gint _n_press,
                  gdouble x,
                  gdouble y);
static void ___lambda27__gtk_gesture_click_pressed (GtkGestureClick* _sender,
                                             gint n_press,
                                             gdouble x,
                                             gdouble y,
                                             gpointer self);
static void __lambda28_ (SwayNotificationCenterNotificationGroup* self,
                  GtkGestureClick* gesture,
                  gint _n_press,
                  gdouble _x,
                  gdouble _y);
VALA_EXTERN gboolean sway_notification_center_expandable_group_get_is_expanded (SwayNotificationCenterExpandableGroup* self);
VALA_EXTERN SwayNotificationCenterNotificationGroupState sway_notification_center_notification_group_get_state (SwayNotificationCenterNotificationGroup* self);
static void _vala_GdkEventSequence_free (GdkEventSequence* self);
static void ___lambda28__gtk_gesture_click_released (GtkGestureClick* _sender,
                                              gint n_press,
                                              gdouble x,
                                              gdouble y,
                                              gpointer self);
static void __lambda29_ (SwayNotificationCenterNotificationGroup* self,
                  GtkGesture* gesture,
                  GdkEventSequence* sequence);
static void ___lambda29__gtk_gesture_update (GtkGesture* _sender,
                                      GdkEventSequence* sequence,
                                      gpointer self);
static void __lambda30_ (SwayNotificationCenterNotificationGroup* self,
                  GtkGesture* gesture,
                  GdkEventSequence* sequence);
static void ___lambda30__gtk_gesture_cancel (GtkGesture* _sender,
                                      GdkEventSequence* sequence,
                                      gpointer self);
static void __lambda31_ (SwayNotificationCenterNotificationGroup* self,
                  gdouble event);
VALA_EXTERN void sway_notification_center_notification_close_button_set_reveal (SwayNotificationCenterNotificationCloseButton* self,
                                                                    gboolean state);
static void ___lambda31__gtk_event_controller_motion_motion (GtkEventControllerMotion* _sender,
                                                      gdouble x,
                                                      gdouble y,
                                                      gpointer self);
static void __lambda32_ (SwayNotificationCenterNotificationGroup* self,
                  GtkEventControllerMotion* controller);
static void ___lambda32__gtk_event_controller_motion_leave (GtkEventControllerMotion* _sender,
                                                     gpointer self);
static void sway_notification_center_notification_group_play_remove_animation_data_free (gpointer _data);
static void sway_notification_center_notification_group_play_remove_animation (SwayNotificationCenterNotificationGroup* self,
                                                                        gboolean transition,
                                                                        GAsyncReadyCallback _callback_,
                                                                        gpointer _user_data_);
static gboolean sway_notification_center_notification_group_play_remove_animation_finish (SwayNotificationCenterNotificationGroup* self,
                                                                                   GAsyncResult* _res_);
static gboolean sway_notification_center_notification_group_play_remove_animation_co (SwayNotificationCenterNotificationGroupPlayRemoveAnimationData* _data_);
static Block12Data* block12_data_ref (Block12Data* _data12_);
static void block12_data_unref (void * _userdata_);
static void ___lambda23_ (Block12Data* _data12_,
                   AdwAnimation* e);
static void ____lambda23__adw_animation_done (AdwAnimation* _sender,
                                       gpointer self);
VALA_EXTERN gdouble animation_value_target_get_progress (AnimationValueTarget* self);
static void sway_notification_center_notification_group_real_snapshot (GtkWidget* base,
                                                                GtkSnapshot* snapshot);
VALA_EXTERN guint sway_notification_center_expandable_group_get_n_children (SwayNotificationCenterExpandableGroup* self);
static void sway_notification_center_notification_group_set_state (SwayNotificationCenterNotificationGroup* self,
                                                            SwayNotificationCenterNotificationGroupState value);
VALA_EXTERN gboolean sway_notification_center_notification_group_get_dismissed (SwayNotificationCenterNotificationGroup* self);
static void sway_notification_center_notification_group_set_icon (SwayNotificationCenterNotificationGroup* self);
VALA_EXTERN SwayNotificationCenterNotification* sway_notification_center_notification_group_get_latest_notification (SwayNotificationCenterNotificationGroup* self);
VALA_EXTERN GType sway_notification_center_notify_params_get_type (void) G_GNUC_CONST ;
G_DEFINE_AUTOPTR_CLEANUP_FUNC (SwayNotificationCenterNotifyParams, g_object_unref)
VALA_EXTERN SwayNotificationCenterNotifyParams* sway_notification_center_notification_get_param (SwayNotificationCenterNotification* self);
VALA_EXTERN GDesktopAppInfo* sway_notification_center_notify_params_get_desktop_app_info (SwayNotificationCenterNotifyParams* self);
static SwayNotificationCenterNotification* sway_notification_center_notification_group_find_notification (SwayNotificationCenterNotificationGroup* self,
                                                                                                   guint32 id);
VALA_EXTERN GeeHashMap* sway_notification_center_notification_group_get_notification_ids (SwayNotificationCenterNotificationGroup* self);
VALA_EXTERN guint32 sway_notification_center_notify_params_get_applied_id (SwayNotificationCenterNotifyParams* self);
VALA_EXTERN void sway_notification_center_expandable_group_set_expanded (SwayNotificationCenterExpandableGroup* self,
                                                             gboolean value);
VALA_EXTERN void dismissible_widget_set_can_dismiss (DismissibleWidget* self,
                                         gboolean state);
VALA_EXTERN gboolean sway_notification_center_notification_group_toggle_expanded (SwayNotificationCenterNotificationGroup* self);
VALA_EXTERN void sway_notification_center_notification_group_add_notification (SwayNotificationCenterNotificationGroup* self,
                                                                   SwayNotificationCenterNotification* noti);
VALA_EXTERN GType sway_notification_center_urgency_levels_get_type (void) G_GNUC_CONST ;
VALA_EXTERN SwayNotificationCenterUrgencyLevels sway_notification_center_notify_params_get_urgency (SwayNotificationCenterNotifyParams* self);
VALA_EXTERN void sway_notification_center_expandable_group_add (SwayNotificationCenterExpandableGroup* self,
                                                    GtkWidget* widget);
VALA_EXTERN gboolean sway_notification_center_notification_group_replace_notification (SwayNotificationCenterNotificationGroup* self,
                                                                           guint32 id,
                                                                           SwayNotificationCenterNotifyParams* new_params);
VALA_EXTERN void sway_notification_center_notification_replace_notification (SwayNotificationCenterNotification* self,
                                                                 SwayNotificationCenterNotifyParams* new_params);
static void sway_notification_center_notification_group_remove_notification_data_free (gpointer _data);
VALA_EXTERN void sway_notification_center_notification_group_remove_notification (SwayNotificationCenterNotificationGroup* self,
                                                                      guint32 id,
                                                                      GAsyncReadyCallback _callback_,
                                                                      gpointer _user_data_);
VALA_EXTERN gboolean sway_notification_center_notification_group_remove_notification_finish (SwayNotificationCenterNotificationGroup* self,
                                                                                 GAsyncResult* _res_);
static gboolean sway_notification_center_notification_group_remove_notification_co (SwayNotificationCenterNotificationGroupRemoveNotificationData* _data_);
VALA_EXTERN void sway_notification_center_notification_remove_noti_timeout (SwayNotificationCenterNotification* self);
VALA_EXTERN void sway_notification_center_notification_remove_notification (SwayNotificationCenterNotification* self,
                                                                gboolean animated,
                                                                GAsyncReadyCallback _callback_,
                                                                gpointer _user_data_);
VALA_EXTERN void sway_notification_center_notification_remove_notification_finish (SwayNotificationCenterNotification* self,
                                                                       GAsyncResult* _res_);
VALA_EXTERN gboolean sway_notification_center_notification_group_get_dismissed_by_swipe (SwayNotificationCenterNotificationGroup* self);
static void sway_notification_center_notification_group_remove_notification_ready (GObject* source_object,
                                                                            GAsyncResult* _res_,
                                                                            gpointer _user_data_);
static void sway_notification_center_notification_group_set_dismissed (SwayNotificationCenterNotificationGroup* self,
                                                                gboolean value);
VALA_EXTERN gboolean sway_notification_center_notification_get_dismissed_by_swipe (SwayNotificationCenterNotification* self);
VALA_EXTERN void sway_notification_center_expandable_group_remove (SwayNotificationCenterExpandableGroup* self,
                                                       GtkWidget* widget);
static void sway_notification_center_notification_group_remove_all_notifications_data_free (gpointer _data);
VALA_EXTERN void sway_notification_center_notification_group_remove_all_notifications (SwayNotificationCenterNotificationGroup* self,
                                                                           gboolean transition,
                                                                           GAsyncReadyCallback _callback_,
                                                                           gpointer _user_data_);
VALA_EXTERN gboolean sway_notification_center_notification_group_remove_all_notifications_finish (SwayNotificationCenterNotificationGroup* self,
                                                                                      GAsyncResult* _res_);
static gboolean sway_notification_center_notification_group_remove_all_notifications_co (SwayNotificationCenterNotificationGroupRemoveAllNotificationsData* _data_);
VALA_EXTERN GtkWidget* sway_notification_center_expandable_group_get_first_widget (SwayNotificationCenterExpandableGroup* self,
                                                                       SwayNotificationCenterExpandableGroupWidgetFilterDelegate filter,
                                                                       gpointer filter_target);
VALA_EXTERN gboolean sway_notification_center_expandable_group_is_empty (SwayNotificationCenterExpandableGroup* self);
static void sway_notification_center_notification_group_remove_all_notifications_ready (GObject* source_object,
                                                                                 GAsyncResult* _res_,
                                                                                 gpointer _user_data_);
VALA_EXTERN void sway_notification_center_expandable_group_remove_all (SwayNotificationCenterExpandableGroup* self);
VALA_EXTERN GType sway_notification_center_noti_daemon_get_type (void) G_GNUC_CONST ;
G_DEFINE_AUTOPTR_CLEANUP_FUNC (SwayNotificationCenterNotiDaemon, g_object_unref)
VALA_EXTERN guint sway_notification_center_noti_daemon_register_object (void* object,
                                                            GDBusConnection* connection,
                                                            const gchar* path,
                                                            GError** error);
VALA_EXTERN GType sway_notification_center_closed_reasons_get_type (void) G_GNUC_CONST ;
VALA_EXTERN void sway_notification_center_noti_daemon_request_dismiss_notification_group (SwayNotificationCenterNotiDaemon* self,
                                                                              const gchar* group_name_id,
                                                                              GeeSet* ids,
                                                                              SwayNotificationCenterClosedReasons reason);
static gboolean __lambda33_ (SwayNotificationCenterNotificationGroup* self,
                      GtkWidget* widget);
VALA_EXTERN gboolean sway_notification_center_notification_get_dismissed (SwayNotificationCenterNotification* self);
static gboolean ___lambda33__sway_notification_center_expandable_group_widget_filter_delegate (GtkWidget* widget,
                                                                                        gpointer self);
VALA_EXTERN gint64 sway_notification_center_notification_group_get_time (SwayNotificationCenterNotificationGroup* self);
VALA_EXTERN gint64 sway_notification_center_notify_params_get_time (SwayNotificationCenterNotifyParams* self);
VALA_EXTERN gboolean sway_notification_center_notification_group_get_is_urgent (SwayNotificationCenterNotificationGroup* self);
VALA_EXTERN guint sway_notification_center_notification_group_get_num_notifications (SwayNotificationCenterNotificationGroup* self);
VALA_EXTERN void sway_notification_center_notification_group_update (SwayNotificationCenterNotificationGroup* self);
VALA_EXTERN void sway_notification_center_notification_set_time (SwayNotificationCenterNotification* self);
VALA_EXTERN gfloat sway_notification_center_notification_group_get_relative_y (SwayNotificationCenterNotificationGroup* self,
                                                                   GtkWidget* parent);
static void sway_notification_center_notification_group_set_notification_ids (SwayNotificationCenterNotificationGroup* self,
                                                                       GeeHashMap* value);
static void sway_notification_center_notification_group_finalize (GObject * obj);
static GType sway_notification_center_notification_group_get_type_once (void);
static void _vala_sway_notification_center_notification_group_get_property (GObject * object,
                                                                     guint property_id,
                                                                     GValue * value,
                                                                     GParamSpec * pspec);
static void _vala_sway_notification_center_notification_group_set_property (GObject * object,
                                                                     guint property_id,
                                                                     const GValue * value,
                                                                     GParamSpec * pspec);

 G_GNUC_NO_INLINE static GType
sway_notification_center_notification_group_state_get_type_once (void)
{
	static const GEnumValue values[] = {{SWAY_NOTIFICATION_CENTER_NOTIFICATION_GROUP_STATE_EMPTY, "SWAY_NOTIFICATION_CENTER_NOTIFICATION_GROUP_STATE_EMPTY", "empty"}, {SWAY_NOTIFICATION_CENTER_NOTIFICATION_GROUP_STATE_SINLGE, "SWAY_NOTIFICATION_CENTER_NOTIFICATION_GROUP_STATE_SINLGE", "sinlge"}, {SWAY_NOTIFICATION_CENTER_NOTIFICATION_GROUP_STATE_MANY, "SWAY_NOTIFICATION_CENTER_NOTIFICATION_GROUP_STATE_MANY", "many"}, {0, NULL, NULL}};
	GType sway_notification_center_notification_group_state_type_id;
	sway_notification_center_notification_group_state_type_id = g_enum_register_static ("SwayNotificationCenterNotificationGroupState", values);
	return sway_notification_center_notification_group_state_type_id;
}

GType
sway_notification_center_notification_group_state_get_type (void)
{
	static gsize sway_notification_center_notification_group_state_type_id__once = 0;
	if (g_once_init_enter (&sway_notification_center_notification_group_state_type_id__once)) {
		GType sway_notification_center_notification_group_state_type_id;
		sway_notification_center_notification_group_state_type_id = sway_notification_center_notification_group_state_get_type_once ();
		g_once_init_leave (&sway_notification_center_notification_group_state_type_id__once, sway_notification_center_notification_group_state_type_id);
	}
	return sway_notification_center_notification_group_state_type_id__once;
}

static inline gpointer
sway_notification_center_notification_group_get_instance_private (SwayNotificationCenterNotificationGroup* self)
{
	return G_STRUCT_MEMBER_P (self, SwayNotificationCenterNotificationGroup_private_offset);
}

static void
_sway_notification_center_notification_group_animation_value_changed_animation_value_targetcallback (gdouble value,
                                                                                                     gpointer self)
{
	sway_notification_center_notification_group_animation_value_changed ((SwayNotificationCenterNotificationGroup*) self, value);
}

static void
__lambda21_ (SwayNotificationCenterNotificationGroup* self)
{
	sway_notification_center_notification_group_set_dismissed_by_swipe (self, TRUE);
	sway_notification_center_notification_group_request_dismiss_all_notifications (self);
}

static void
___lambda21__dismissible_widget_dismissed (DismissibleWidget* _sender,
                                           gpointer self)
{
	__lambda21_ ((SwayNotificationCenterNotificationGroup*) self);
}

static void
_sway_notification_center_notification_group_request_dismiss_all_notifications_sway_notification_center_notification_close_button_clicked (SwayNotificationCenterNotificationCloseButton* _sender,
                                                                                                                                           gpointer self)
{
	sway_notification_center_notification_group_request_dismiss_all_notifications ((SwayNotificationCenterNotificationGroup*) self);
}

static void
__lambda25_ (SwayNotificationCenterNotificationGroup* self)
{
	sway_notification_center_notification_group_set_expanded (self, FALSE);
	g_signal_emit (self, sway_notification_center_notification_group_signals[SWAY_NOTIFICATION_CENTER_NOTIFICATION_GROUP_ON_EXPAND_CHANGE_SIGNAL], 0, FALSE);
}

static void
___lambda25__gtk_button_clicked (GtkButton* _sender,
                                 gpointer self)
{
	__lambda25_ ((SwayNotificationCenterNotificationGroup*) self);
}

static void
__lambda26_ (SwayNotificationCenterNotificationGroup* self)
{
	sway_notification_center_notification_group_request_dismiss_all_notifications (self);
	g_signal_emit (self, sway_notification_center_notification_group_signals[SWAY_NOTIFICATION_CENTER_NOTIFICATION_GROUP_ON_EXPAND_CHANGE_SIGNAL], 0, FALSE);
}

static void
___lambda26__gtk_button_clicked (GtkButton* _sender,
                                 gpointer self)
{
	__lambda26_ ((SwayNotificationCenterNotificationGroup*) self);
}

static void
_sway_notification_center_notification_group_update_state_g_object_notify (GObject* _sender,
                                                                           GParamSpec* pspec,
                                                                           gpointer self)
{
	sway_notification_center_notification_group_update_state ((SwayNotificationCenterNotificationGroup*) self);
}

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

static void
__lambda27_ (SwayNotificationCenterNotificationGroup* self,
             GtkGestureClick* _gesture,
             gint _n_press,
             gdouble x,
             gdouble y)
{
	g_return_if_fail (G_TYPE_CHECK_INSTANCE_TYPE (_gesture, gtk_gesture_click_get_type ()));
	self->priv->gesture_in = TRUE;
	self->priv->gesture_down = TRUE;
}

static void
___lambda27__gtk_gesture_click_pressed (GtkGestureClick* _sender,
                                        gint n_press,
                                        gdouble x,
                                        gdouble y,
                                        gpointer self)
{
	__lambda27_ ((SwayNotificationCenterNotificationGroup*) self, _sender, n_press, x, y);
}

static void
_vala_GdkEventSequence_free (GdkEventSequence* self)
{
	g_boxed_free (gdk_event_sequence_get_type (), self);
}

static void
__lambda28_ (SwayNotificationCenterNotificationGroup* self,
             GtkGestureClick* gesture,
             gint _n_press,
             gdouble _x,
             gdouble _y)
{
	GdkEventSequence* sequence = NULL;
	GdkEventSequence* _tmp5_;
	GdkEventSequence* _tmp6_;
	g_return_if_fail (G_TYPE_CHECK_INSTANCE_TYPE (gesture, gtk_gesture_click_get_type ()));
	if (!self->priv->gesture_down) {
		return;
	}
	self->priv->gesture_down = FALSE;
	if (self->priv->gesture_in) {
		gboolean _tmp0_ = FALSE;
		SwayNotificationCenterExpandableGroup* _tmp1_;
		gboolean _tmp2_;
		gboolean _tmp3_;
		_tmp1_ = self->priv->group;
		_tmp2_ = sway_notification_center_expandable_group_get_is_expanded (_tmp1_);
		_tmp3_ = _tmp2_;
		if (!_tmp3_) {
			SwayNotificationCenterNotificationGroupState _tmp4_;
			_tmp4_ = self->priv->_state;
			_tmp0_ = _tmp4_ == SWAY_NOTIFICATION_CENTER_NOTIFICATION_GROUP_STATE_MANY;
		} else {
			_tmp0_ = FALSE;
		}
		if (_tmp0_) {
			sway_notification_center_notification_group_set_expanded (self, TRUE);
			g_signal_emit (self, sway_notification_center_notification_group_signals[SWAY_NOTIFICATION_CENTER_NOTIFICATION_GROUP_ON_EXPAND_CHANGE_SIGNAL], 0, TRUE);
		}
	}
	_tmp5_ = gtk_gesture_single_get_current_sequence (G_TYPE_CHECK_INSTANCE_CAST (gesture, gtk_gesture_single_get_type (), GtkGestureSingle));
	sequence = _tmp5_;
	_tmp6_ = sequence;
	if (_tmp6_ == NULL) {
		self->priv->gesture_in = FALSE;
	}
	__vala_GdkEventSequence_free0 (sequence);
}

static void
___lambda28__gtk_gesture_click_released (GtkGestureClick* _sender,
                                         gint n_press,
                                         gdouble x,
                                         gdouble y,
                                         gpointer self)
{
	__lambda28_ ((SwayNotificationCenterNotificationGroup*) self, _sender, n_press, x, y);
}

static void
__lambda29_ (SwayNotificationCenterNotificationGroup* self,
             GtkGesture* gesture,
             GdkEventSequence* sequence)
{
	GtkGestureSingle* gesture_single = NULL;
	GtkGestureSingle* _tmp0_;
	GtkGestureSingle* _tmp1_;
	GdkEventSequence* _tmp2_;
	GdkEventSequence* _tmp3_;
	gboolean _tmp4_;
	gint width = 0;
	gint height = 0;
	gdouble x = 0.0;
	gdouble y = 0.0;
	gdouble _tmp5_ = 0.0;
	gdouble _tmp6_ = 0.0;
	gboolean _tmp7_ = FALSE;
	gboolean _tmp8_ = FALSE;
	gboolean _tmp9_ = FALSE;
	gboolean intersects = FALSE;
	g_return_if_fail (G_TYPE_CHECK_INSTANCE_TYPE (gesture, gtk_gesture_get_type ()));
	_tmp0_ = _g_object_ref0 (G_TYPE_CHECK_INSTANCE_CAST (gesture, gtk_gesture_single_get_type (), GtkGestureSingle));
	gesture_single = _tmp0_;
	_tmp1_ = gesture_single;
	_tmp2_ = gtk_gesture_single_get_current_sequence (_tmp1_);
	_tmp3_ = _tmp2_;
	_tmp4_ = sequence != _tmp3_;
	__vala_GdkEventSequence_free0 (_tmp3_);
	if (_tmp4_) {
		_g_object_unref0 (gesture_single);
		return;
	}
	width = gtk_widget_get_width (G_TYPE_CHECK_INSTANCE_CAST (self, gtk_widget_get_type (), GtkWidget));
	height = gtk_widget_get_height (G_TYPE_CHECK_INSTANCE_CAST (self, gtk_widget_get_type (), GtkWidget));
	gtk_gesture_get_point (gesture, sequence, &_tmp5_, &_tmp6_);
	x = _tmp5_;
	y = _tmp6_;
	if (x >= ((gdouble) 0)) {
		_tmp9_ = y >= ((gdouble) 0);
	} else {
		_tmp9_ = FALSE;
	}
	if (_tmp9_) {
		_tmp8_ = x < ((gdouble) width);
	} else {
		_tmp8_ = FALSE;
	}
	if (_tmp8_) {
		_tmp7_ = y < ((gdouble) height);
	} else {
		_tmp7_ = FALSE;
	}
	intersects = _tmp7_;
	if (self->priv->gesture_in != intersects) {
		self->priv->gesture_in = intersects;
	}
	_g_object_unref0 (gesture_single);
}

static void
___lambda29__gtk_gesture_update (GtkGesture* _sender,
                                 GdkEventSequence* sequence,
                                 gpointer self)
{
	__lambda29_ ((SwayNotificationCenterNotificationGroup*) self, _sender, sequence);
}

static void
__lambda30_ (SwayNotificationCenterNotificationGroup* self,
             GtkGesture* gesture,
             GdkEventSequence* sequence)
{
	g_return_if_fail (G_TYPE_CHECK_INSTANCE_TYPE (gesture, gtk_gesture_get_type ()));
	if (self->priv->gesture_down) {
		self->priv->gesture_down = FALSE;
	}
}

static void
___lambda30__gtk_gesture_cancel (GtkGesture* _sender,
                                 GdkEventSequence* sequence,
                                 gpointer self)
{
	__lambda30_ ((SwayNotificationCenterNotificationGroup*) self, _sender, sequence);
}

static void
__lambda31_ (SwayNotificationCenterNotificationGroup* self,
             gdouble event)
{
	gboolean _tmp0_ = FALSE;
	SwayNotificationCenterExpandableGroup* _tmp1_;
	gboolean _tmp2_;
	gboolean _tmp3_;
	SwayNotificationCenterNotificationCloseButton* _tmp5_;
	_tmp1_ = self->priv->group;
	_tmp2_ = sway_notification_center_expandable_group_get_is_expanded (_tmp1_);
	_tmp3_ = _tmp2_;
	if (!_tmp3_) {
		SwayNotificationCenterNotificationGroupState _tmp4_;
		_tmp4_ = self->priv->_state;
		_tmp0_ = _tmp4_ == SWAY_NOTIFICATION_CENTER_NOTIFICATION_GROUP_STATE_MANY;
	} else {
		_tmp0_ = FALSE;
	}
	_tmp5_ = self->priv->close_button;
	sway_notification_center_notification_close_button_set_reveal (_tmp5_, _tmp0_);
}

static void
___lambda31__gtk_event_controller_motion_motion (GtkEventControllerMotion* _sender,
                                                 gdouble x,
                                                 gdouble y,
                                                 gpointer self)
{
	__lambda31_ ((SwayNotificationCenterNotificationGroup*) self, x);
}

static void
__lambda32_ (SwayNotificationCenterNotificationGroup* self,
             GtkEventControllerMotion* controller)
{
	SwayNotificationCenterNotificationCloseButton* _tmp0_;
	g_return_if_fail (G_TYPE_CHECK_INSTANCE_TYPE (controller, gtk_event_controller_motion_get_type ()));
	_tmp0_ = self->priv->close_button;
	sway_notification_center_notification_close_button_set_reveal (_tmp0_, FALSE);
}

static void
___lambda32__gtk_event_controller_motion_leave (GtkEventControllerMotion* _sender,
                                                gpointer self)
{
	__lambda32_ ((SwayNotificationCenterNotificationGroup*) self, _sender);
}

SwayNotificationCenterNotificationGroup*
sway_notification_center_notification_group_construct (GType object_type,
                                                       const gchar* name_id,
                                                       const gchar* display_name,
                                                       GtkViewport* viewport)
{
	SwayNotificationCenterNotificationGroup * self = NULL;
	gchar* _tmp0_;
	AnimationValueTarget* _tmp1_;
	AnimationValueTarget* _tmp2_;
	AdwPropertyAnimationTarget* _tmp3_;
	AdwTimedAnimation* _tmp4_;
	AdwTimedAnimation* _tmp5_;
	DismissibleWidget* _tmp6_;
	DismissibleWidget* _tmp7_;
	DismissibleWidget* _tmp8_;
	GtkOverlay* overlay = NULL;
	GtkOverlay* _tmp9_;
	DismissibleWidget* _tmp10_;
	GtkBox* box = NULL;
	GtkBox* _tmp11_;
	SwayNotificationCenterNotificationCloseButton* _tmp12_;
	SwayNotificationCenterNotificationCloseButton* _tmp13_;
	SwayNotificationCenterNotificationCloseButton* _tmp14_;
	SwayNotificationCenterNotificationCloseButton* _tmp15_;
	GtkRevealer* _tmp16_;
	GtkRevealer* _tmp17_;
	GtkRevealer* _tmp18_;
	GtkBox* controls_box = NULL;
	GtkBox* _tmp19_;
	GtkBox* end_box = NULL;
	GtkBox* _tmp20_;
	GtkButton* collapse_button = NULL;
	GtkButton* _tmp21_;
	GtkButton* close_all_button = NULL;
	GtkButton* _tmp22_;
	GtkBox* start_box = NULL;
	GtkBox* _tmp23_;
	GtkImage* _tmp24_;
	GtkImage* _tmp25_;
	GtkImage* _tmp26_;
	GtkImage* _tmp27_;
	GtkLabel* _tmp28_;
	GtkLabel* _tmp29_;
	GtkLabel* _tmp30_;
	GtkLabel* _tmp31_;
	GtkLabel* _tmp32_;
	GtkLabel* _tmp33_;
	GtkRevealer* _tmp34_;
	GtkRevealer* _tmp35_;
	SwayNotificationCenterExpandableGroup* _tmp36_;
	SwayNotificationCenterExpandableGroup* _tmp37_;
	SwayNotificationCenterExpandableGroup* _tmp38_;
	GtkGestureClick* _tmp39_;
	GtkGestureClick* _tmp40_;
	GtkEventController* _tmp41_;
	GtkGestureClick* _tmp42_;
	GtkGestureClick* _tmp43_;
	GtkGestureClick* _tmp44_;
	GtkGestureClick* _tmp45_;
	GtkGestureClick* _tmp46_;
	GtkGestureClick* _tmp47_;
	GtkGestureClick* _tmp48_;
	GtkGestureClick* _tmp49_;
	GtkEventControllerMotion* _tmp50_;
	GtkEventControllerMotion* _tmp51_;
	GtkEventController* _tmp52_;
	GtkEventControllerMotion* _tmp53_;
	GtkEventControllerMotion* _tmp54_;
	g_return_val_if_fail (name_id != NULL, NULL);
	g_return_val_if_fail (display_name != NULL, NULL);
	g_return_val_if_fail (G_TYPE_CHECK_INSTANCE_TYPE (viewport, gtk_viewport_get_type ()), NULL);
	self = (SwayNotificationCenterNotificationGroup*) g_object_new (object_type, NULL);
	_tmp0_ = g_strdup (name_id);
	_g_free0 (self->name_id);
	self->name_id = _tmp0_;
	gtk_widget_add_css_class (G_TYPE_CHECK_INSTANCE_CAST (self, gtk_widget_get_type (), GtkWidget), "notification-group");
	_tmp1_ = animation_value_target_new (1.0f, _sway_notification_center_notification_group_animation_value_changed_animation_value_targetcallback, self);
	if (_tmp1_) {
		g_object_set_data ((GObject *) _tmp1_, "vala-creation-function", "SwayNotificationCenter.NotificationGroup.new");
	}
	_g_object_unref0 (self->priv->animation_target);
	self->priv->animation_target = _tmp1_;
	_tmp2_ = self->priv->animation_target;
	_tmp3_ = animation_value_target_get_animation_target (_tmp2_);
	_tmp4_ = (AdwTimedAnimation*) adw_timed_animation_new (G_TYPE_CHECK_INSTANCE_CAST (self, gtk_widget_get_type (), GtkWidget), 1.0, 0.0, CONSTANTS_ANIMATION_DURATION, G_TYPE_CHECK_INSTANCE_CAST (_tmp3_, adw_animation_target_get_type (), AdwAnimationTarget));
	if (_tmp4_) {
		g_object_set_data ((GObject *) _tmp4_, "vala-creation-function", "SwayNotificationCenter.NotificationGroup.new");
	}
	_g_object_unref0 (self->priv->remove_animation);
	self->priv->remove_animation = _tmp4_;
	_tmp5_ = self->priv->remove_animation;
	adw_timed_animation_set_easing (_tmp5_, ADW_EASE_IN_OUT_CUBIC);
	_tmp6_ = dismissible_widget_new ();
	if (_tmp6_) {
		g_object_set_data ((GObject *) _tmp6_, "vala-creation-function", "SwayNotificationCenter.NotificationGroup.new");
	}
	g_object_ref_sink (_tmp6_);
	_g_object_unref0 (self->priv->dismissible);
	self->priv->dismissible = _tmp6_;
	_tmp7_ = self->priv->dismissible;
	g_signal_connect_object (_tmp7_, "dismissed", (GCallback) ___lambda21__dismissible_widget_dismissed, self, 0);
	_tmp8_ = self->priv->dismissible;
	gtk_list_box_row_set_child (G_TYPE_CHECK_INSTANCE_CAST (self, gtk_list_box_row_get_type (), GtkListBoxRow), G_TYPE_CHECK_INSTANCE_CAST (_tmp8_, gtk_widget_get_type (), GtkWidget));
	_tmp9_ = (GtkOverlay*) gtk_overlay_new ();
	if (_tmp9_) {
		g_object_set_data ((GObject *) _tmp9_, "vala-creation-function", "SwayNotificationCenter.NotificationGroup.new");
	}
	g_object_ref_sink (_tmp9_);
	overlay = _tmp9_;
	_tmp10_ = self->priv->dismissible;
	dismissible_widget_set_child (_tmp10_, G_TYPE_CHECK_INSTANCE_CAST (overlay, gtk_widget_get_type (), GtkWidget));
	_tmp11_ = (GtkBox*) gtk_box_new (GTK_ORIENTATION_VERTICAL, 0);
	if (_tmp11_) {
		g_object_set_data ((GObject *) _tmp11_, "vala-creation-function", "SwayNotificationCenter.NotificationGroup.new");
	}
	g_object_ref_sink (_tmp11_);
	box = _tmp11_;
	gtk_widget_set_hexpand (G_TYPE_CHECK_INSTANCE_CAST (box, gtk_widget_get_type (), GtkWidget), TRUE);
	gtk_overlay_set_child (overlay, G_TYPE_CHECK_INSTANCE_CAST (box, gtk_widget_get_type (), GtkWidget));
	_tmp12_ = sway_notification_center_notification_close_button_new ();
	if (_tmp12_) {
		g_object_set_data ((GObject *) _tmp12_, "vala-creation-function", "SwayNotificationCenter.NotificationGroup.new");
	}
	g_object_ref_sink (_tmp12_);
	_g_object_unref0 (self->priv->close_button);
	self->priv->close_button = _tmp12_;
	_tmp13_ = self->priv->close_button;
	g_signal_connect_object (_tmp13_, "clicked", (GCallback) _sway_notification_center_notification_group_request_dismiss_all_notifications_sway_notification_center_notification_close_button_clicked, self, 0);
	_tmp14_ = self->priv->close_button;
	gtk_widget_add_css_class (G_TYPE_CHECK_INSTANCE_CAST (_tmp14_, gtk_widget_get_type (), GtkWidget), "notification-group-close-button");
	_tmp15_ = self->priv->close_button;
	gtk_overlay_add_overlay (overlay, G_TYPE_CHECK_INSTANCE_CAST (_tmp15_, gtk_widget_get_type (), GtkWidget));
	_tmp16_ = self->priv->revealer;
	gtk_revealer_set_transition_type (_tmp16_, GTK_REVEALER_TRANSITION_TYPE_SLIDE_UP);
	_tmp17_ = self->priv->revealer;
	gtk_revealer_set_reveal_child (_tmp17_, FALSE);
	_tmp18_ = self->priv->revealer;
	gtk_revealer_set_transition_duration (_tmp18_, CONSTANTS_ANIMATION_DURATION);
	_tmp19_ = (GtkBox*) gtk_box_new (GTK_ORIENTATION_HORIZONTAL, 4);
	if (_tmp19_) {
		g_object_set_data ((GObject *) _tmp19_, "vala-creation-function", "SwayNotificationCenter.NotificationGroup.new");
	}
	g_object_ref_sink (_tmp19_);
	controls_box = _tmp19_;
	_tmp20_ = (GtkBox*) gtk_box_new (GTK_ORIENTATION_HORIZONTAL, 4);
	if (_tmp20_) {
		g_object_set_data ((GObject *) _tmp20_, "vala-creation-function", "SwayNotificationCenter.NotificationGroup.new");
	}
	g_object_ref_sink (_tmp20_);
	end_box = _tmp20_;
	gtk_widget_set_halign (G_TYPE_CHECK_INSTANCE_CAST (end_box, gtk_widget_get_type (), GtkWidget), GTK_ALIGN_END);
	gtk_widget_add_css_class (G_TYPE_CHECK_INSTANCE_CAST (end_box, gtk_widget_get_type (), GtkWidget), "notification-group-buttons");
	_tmp21_ = (GtkButton*) gtk_button_new_from_icon_name ("swaync-collapse-symbolic");
	if (_tmp21_) {
		g_object_set_data ((GObject *) _tmp21_, "vala-creation-function", "SwayNotificationCenter.NotificationGroup.new");
	}
	g_object_ref_sink (_tmp21_);
	collapse_button = _tmp21_;
	gtk_widget_add_css_class (G_TYPE_CHECK_INSTANCE_CAST (collapse_button, gtk_widget_get_type (), GtkWidget), "circular");
	gtk_widget_add_css_class (G_TYPE_CHECK_INSTANCE_CAST (collapse_button, gtk_widget_get_type (), GtkWidget), "notification-group-collapse-button");
	gtk_widget_set_halign (G_TYPE_CHECK_INSTANCE_CAST (collapse_button, gtk_widget_get_type (), GtkWidget), GTK_ALIGN_END);
	gtk_widget_set_valign (G_TYPE_CHECK_INSTANCE_CAST (collapse_button, gtk_widget_get_type (), GtkWidget), GTK_ALIGN_CENTER);
	g_signal_connect_object (collapse_button, "clicked", (GCallback) ___lambda25__gtk_button_clicked, self, 0);
	gtk_box_append (end_box, G_TYPE_CHECK_INSTANCE_CAST (collapse_button, gtk_widget_get_type (), GtkWidget));
	_tmp22_ = (GtkButton*) gtk_button_new_from_icon_name ("swaync-close-symbolic");
	if (_tmp22_) {
		g_object_set_data ((GObject *) _tmp22_, "vala-creation-function", "SwayNotificationCenter.NotificationGroup.new");
	}
	g_object_ref_sink (_tmp22_);
	close_all_button = _tmp22_;
	gtk_widget_add_css_class (G_TYPE_CHECK_INSTANCE_CAST (close_all_button, gtk_widget_get_type (), GtkWidget), "circular");
	gtk_widget_add_css_class (G_TYPE_CHECK_INSTANCE_CAST (close_all_button, gtk_widget_get_type (), GtkWidget), "notification-group-close-all-button");
	gtk_widget_set_halign (G_TYPE_CHECK_INSTANCE_CAST (close_all_button, gtk_widget_get_type (), GtkWidget), GTK_ALIGN_END);
	gtk_widget_set_valign (G_TYPE_CHECK_INSTANCE_CAST (close_all_button, gtk_widget_get_type (), GtkWidget), GTK_ALIGN_CENTER);
	g_signal_connect_object (close_all_button, "clicked", (GCallback) ___lambda26__gtk_button_clicked, self, 0);
	gtk_box_append (end_box, G_TYPE_CHECK_INSTANCE_CAST (close_all_button, gtk_widget_get_type (), GtkWidget));
	_tmp23_ = (GtkBox*) gtk_box_new (GTK_ORIENTATION_HORIZONTAL, 4);
	if (_tmp23_) {
		g_object_set_data ((GObject *) _tmp23_, "vala-creation-function", "SwayNotificationCenter.NotificationGroup.new");
	}
	g_object_ref_sink (_tmp23_);
	start_box = _tmp23_;
	gtk_widget_set_halign (G_TYPE_CHECK_INSTANCE_CAST (start_box, gtk_widget_get_type (), GtkWidget), GTK_ALIGN_START);
	gtk_widget_set_hexpand (G_TYPE_CHECK_INSTANCE_CAST (start_box, gtk_widget_get_type (), GtkWidget), TRUE);
	gtk_widget_add_css_class (G_TYPE_CHECK_INSTANCE_CAST (start_box, gtk_widget_get_type (), GtkWidget), "notification-group-headers");
	_tmp24_ = (GtkImage*) gtk_image_new ();
	if (_tmp24_) {
		g_object_set_data ((GObject *) _tmp24_, "vala-creation-function", "SwayNotificationCenter.NotificationGroup.new");
	}
	g_object_ref_sink (_tmp24_);
	_g_object_unref0 (self->priv->app_icon);
	self->priv->app_icon = _tmp24_;
	_tmp25_ = self->priv->app_icon;
	gtk_widget_set_valign (G_TYPE_CHECK_INSTANCE_CAST (_tmp25_, gtk_widget_get_type (), GtkWidget), GTK_ALIGN_CENTER);
	_tmp26_ = self->priv->app_icon;
	gtk_widget_add_css_class (G_TYPE_CHECK_INSTANCE_CAST (_tmp26_, gtk_widget_get_type (), GtkWidget), "notification-group-icon");
	_tmp27_ = self->priv->app_icon;
	gtk_box_append (start_box, G_TYPE_CHECK_INSTANCE_CAST (_tmp27_, gtk_widget_get_type (), GtkWidget));
	_tmp28_ = (GtkLabel*) gtk_label_new (display_name);
	if (_tmp28_) {
		g_object_set_data ((GObject *) _tmp28_, "vala-creation-function", "SwayNotificationCenter.NotificationGroup.new");
	}
	g_object_ref_sink (_tmp28_);
	_g_object_unref0 (self->priv->app_label);
	self->priv->app_label = _tmp28_;
	_tmp29_ = self->priv->app_label;
	gtk_label_set_xalign (_tmp29_, (gfloat) 0);
	_tmp30_ = self->priv->app_label;
	gtk_label_set_ellipsize (_tmp30_, PANGO_ELLIPSIZE_END);
	_tmp31_ = self->priv->app_label;
	gtk_widget_add_css_class (G_TYPE_CHECK_INSTANCE_CAST (_tmp31_, gtk_widget_get_type (), GtkWidget), "title-1");
	_tmp32_ = self->priv->app_label;
	gtk_widget_add_css_class (G_TYPE_CHECK_INSTANCE_CAST (_tmp32_, gtk_widget_get_type (), GtkWidget), "notification-group-header");
	_tmp33_ = self->priv->app_label;
	gtk_box_append (start_box, G_TYPE_CHECK_INSTANCE_CAST (_tmp33_, gtk_widget_get_type (), GtkWidget));
	gtk_box_prepend (controls_box, G_TYPE_CHECK_INSTANCE_CAST (start_box, gtk_widget_get_type (), GtkWidget));
	gtk_box_append (controls_box, G_TYPE_CHECK_INSTANCE_CAST (end_box, gtk_widget_get_type (), GtkWidget));
	_tmp34_ = self->priv->revealer;
	gtk_revealer_set_child (_tmp34_, G_TYPE_CHECK_INSTANCE_CAST (controls_box, gtk_widget_get_type (), GtkWidget));
	_tmp35_ = self->priv->revealer;
	gtk_box_append (box, G_TYPE_CHECK_INSTANCE_CAST (_tmp35_, gtk_widget_get_type (), GtkWidget));
	gtk_list_box_row_set_activatable (G_TYPE_CHECK_INSTANCE_CAST (self, gtk_list_box_row_get_type (), GtkListBoxRow), FALSE);
	_tmp36_ = sway_notification_center_expandable_group_new (viewport, CONSTANTS_ANIMATION_DURATION);
	if (_tmp36_) {
		g_object_set_data ((GObject *) _tmp36_, "vala-creation-function", "SwayNotificationCenter.NotificationGroup.new");
	}
	g_object_ref_sink (_tmp36_);
	_g_object_unref0 (self->priv->group);
	self->priv->group = _tmp36_;
	_tmp37_ = self->priv->group;
	g_signal_connect_object (G_TYPE_CHECK_INSTANCE_CAST (_tmp37_, G_TYPE_OBJECT, GObject), "notify::is-expanded", (GCallback) _sway_notification_center_notification_group_update_state_g_object_notify, self, 0);
	_tmp38_ = self->priv->group;
	gtk_box_append (box, G_TYPE_CHECK_INSTANCE_CAST (_tmp38_, gtk_widget_get_type (), GtkWidget));
	sway_notification_center_notification_group_update_state (self);
	_tmp39_ = (GtkGestureClick*) gtk_gesture_click_new ();
	if (_tmp39_) {
		g_object_set_data ((GObject *) _tmp39_, "vala-creation-function", "SwayNotificationCenter.NotificationGroup.new");
	}
	_g_object_unref0 (self->priv->gesture);
	self->priv->gesture = _tmp39_;
	_tmp40_ = self->priv->gesture;
	_tmp41_ = _g_object_ref0 (G_TYPE_CHECK_INSTANCE_CAST (_tmp40_, gtk_event_controller_get_type (), GtkEventController));
	gtk_widget_add_controller (G_TYPE_CHECK_INSTANCE_CAST (box, gtk_widget_get_type (), GtkWidget), _tmp41_);
	_tmp42_ = self->priv->gesture;
	gtk_gesture_single_set_touch_only (G_TYPE_CHECK_INSTANCE_CAST (_tmp42_, gtk_gesture_single_get_type (), GtkGestureSingle), FALSE);
	_tmp43_ = self->priv->gesture;
	gtk_gesture_single_set_exclusive (G_TYPE_CHECK_INSTANCE_CAST (_tmp43_, gtk_gesture_single_get_type (), GtkGestureSingle), TRUE);
	_tmp44_ = self->priv->gesture;
	gtk_gesture_single_set_button (G_TYPE_CHECK_INSTANCE_CAST (_tmp44_, gtk_gesture_single_get_type (), GtkGestureSingle), (guint) GDK_BUTTON_PRIMARY);
	_tmp45_ = self->priv->gesture;
	gtk_event_controller_set_propagation_phase (G_TYPE_CHECK_INSTANCE_CAST (_tmp45_, gtk_event_controller_get_type (), GtkEventController), GTK_PHASE_CAPTURE);
	_tmp46_ = self->priv->gesture;
	g_signal_connect_object (_tmp46_, "pressed", (GCallback) ___lambda27__gtk_gesture_click_pressed, self, 0);
	_tmp47_ = self->priv->gesture;
	g_signal_connect_object (_tmp47_, "released", (GCallback) ___lambda28__gtk_gesture_click_released, self, 0);
	_tmp48_ = self->priv->gesture;
	g_signal_connect_object (G_TYPE_CHECK_INSTANCE_CAST (_tmp48_, gtk_gesture_get_type (), GtkGesture), "update", (GCallback) ___lambda29__gtk_gesture_update, self, 0);
	_tmp49_ = self->priv->gesture;
	g_signal_connect_object (G_TYPE_CHECK_INSTANCE_CAST (_tmp49_, gtk_gesture_get_type (), GtkGesture), "cancel", (GCallback) ___lambda30__gtk_gesture_cancel, self, 0);
	_tmp50_ = (GtkEventControllerMotion*) gtk_event_controller_motion_new ();
	if (_tmp50_) {
		g_object_set_data ((GObject *) _tmp50_, "vala-creation-function", "SwayNotificationCenter.NotificationGroup.new");
	}
	_g_object_unref0 (self->priv->motion_controller);
	self->priv->motion_controller = _tmp50_;
	_tmp51_ = self->priv->motion_controller;
	_tmp52_ = _g_object_ref0 (G_TYPE_CHECK_INSTANCE_CAST (_tmp51_, gtk_event_controller_get_type (), GtkEventController));
	gtk_widget_add_controller (G_TYPE_CHECK_INSTANCE_CAST (self, gtk_widget_get_type (), GtkWidget), _tmp52_);
	_tmp53_ = self->priv->motion_controller;
	g_signal_connect_object (_tmp53_, "motion", (GCallback) ___lambda31__gtk_event_controller_motion_motion, self, 0);
	_tmp54_ = self->priv->motion_controller;
	g_signal_connect_object (_tmp54_, "leave", (GCallback) ___lambda32__gtk_event_controller_motion_leave, self, 0);
	_g_object_unref0 (start_box);
	_g_object_unref0 (close_all_button);
	_g_object_unref0 (collapse_button);
	_g_object_unref0 (end_box);
	_g_object_unref0 (controls_box);
	_g_object_unref0 (box);
	_g_object_unref0 (overlay);
	return self;
}

SwayNotificationCenterNotificationGroup*
sway_notification_center_notification_group_new (const gchar* name_id,
                                                 const gchar* display_name,
                                                 GtkViewport* viewport)
{
	return sway_notification_center_notification_group_construct (SWAY_NOTIFICATION_CENTER_TYPE_NOTIFICATION_GROUP, name_id, display_name, viewport);
}

static void
sway_notification_center_notification_group_animation_value_changed (SwayNotificationCenterNotificationGroup* self,
                                                                     gdouble progress)
{
	g_return_if_fail (SWAY_NOTIFICATION_CENTER_IS_NOTIFICATION_GROUP (self));
	gtk_widget_queue_resize (G_TYPE_CHECK_INSTANCE_CAST (self, gtk_widget_get_type (), GtkWidget));
}

static void
sway_notification_center_notification_group_play_remove_animation_data_free (gpointer _data)
{
	SwayNotificationCenterNotificationGroupPlayRemoveAnimationData* _data_;
	_data_ = _data;
	_g_object_unref0 (_data_->self);
	g_slice_free (SwayNotificationCenterNotificationGroupPlayRemoveAnimationData, _data_);
}

static void
sway_notification_center_notification_group_play_remove_animation (SwayNotificationCenterNotificationGroup* self,
                                                                   gboolean transition,
                                                                   GAsyncReadyCallback _callback_,
                                                                   gpointer _user_data_)
{
	SwayNotificationCenterNotificationGroupPlayRemoveAnimationData* _data_;
	SwayNotificationCenterNotificationGroup* _tmp0_;
	g_return_if_fail (SWAY_NOTIFICATION_CENTER_IS_NOTIFICATION_GROUP (self));
	_data_ = g_slice_new0 (SwayNotificationCenterNotificationGroupPlayRemoveAnimationData);
	_data_->_async_result = g_task_new (G_OBJECT (self), NULL, _callback_, _user_data_);
	g_task_set_task_data (_data_->_async_result, _data_, sway_notification_center_notification_group_play_remove_animation_data_free);
	_tmp0_ = _g_object_ref0 (self);
	_data_->self = _tmp0_;
	_data_->transition = transition;
	sway_notification_center_notification_group_play_remove_animation_co (_data_);
}

static gboolean
sway_notification_center_notification_group_play_remove_animation_finish (SwayNotificationCenterNotificationGroup* self,
                                                                          GAsyncResult* _res_)
{
	gboolean result;
	SwayNotificationCenterNotificationGroupPlayRemoveAnimationData* _data_;
	_data_ = g_task_propagate_pointer (G_TASK (_res_), NULL);
	result = _data_->result;
	return result;
}

static Block12Data*
block12_data_ref (Block12Data* _data12_)
{
	g_atomic_int_inc (&_data12_->_ref_count_);
	return _data12_;
}

static void
block12_data_unref (void * _userdata_)
{
	Block12Data* _data12_;
	_data12_ = (Block12Data*) _userdata_;
	if (g_atomic_int_dec_and_test (&_data12_->_ref_count_)) {
		SwayNotificationCenterNotificationGroup* self;
		self = _data12_->self;
		_g_object_unref0 (self);
		g_slice_free (Block12Data, _data12_);
	}
}

static void
___lambda23_ (Block12Data* _data12_,
              AdwAnimation* e)
{
	SwayNotificationCenterNotificationGroup* self;
	self = _data12_->self;
	g_return_if_fail (G_TYPE_CHECK_INSTANCE_TYPE (e, adw_animation_get_type ()));
	sway_notification_center_notification_group_play_remove_animation_co (_data12_->_async_data_);
}

static void
____lambda23__adw_animation_done (AdwAnimation* _sender,
                                  gpointer self)
{
	___lambda23_ (self, _sender);
}

static gboolean
sway_notification_center_notification_group_play_remove_animation_co (SwayNotificationCenterNotificationGroupPlayRemoveAnimationData* _data_)
{
	switch (_data_->_state_) {
		case 0:
		goto _state_0;
		case 1:
		goto _state_1;
		default:
		g_assert_not_reached ();
	}
	_state_0:
	_data_->_data12_ = g_slice_new0 (Block12Data);
	_data_->_data12_->_ref_count_ = 1;
	_data_->_data12_->self = g_object_ref (_data_->self);
	_data_->_data12_->_async_data_ = _data_;
	if (_data_->self->priv->remove_animation_done_id > ((gulong) 0)) {
		_data_->result = FALSE;
		block12_data_unref (_data_->_data12_);
		_data_->_data12_ = NULL;
		g_task_return_pointer (_data_->_async_result, _data_, NULL);
		if (_data_->_state_ != 0) {
			while (!g_task_get_completed (_data_->_async_result)) {
				g_main_context_iteration (g_task_get_context (_data_->_async_result), TRUE);
			}
		}
		g_object_unref (_data_->_async_result);
		return FALSE;
	}
	gtk_widget_set_can_focus (G_TYPE_CHECK_INSTANCE_CAST (_data_->self, gtk_widget_get_type (), GtkWidget), FALSE);
	gtk_widget_set_can_target (G_TYPE_CHECK_INSTANCE_CAST (_data_->self, gtk_widget_get_type (), GtkWidget), FALSE);
	if (gtk_widget_get_mapped (G_TYPE_CHECK_INSTANCE_CAST (_data_->self, gtk_widget_get_type (), GtkWidget))) {
		_data_->_tmp0_ = _data_->transition;
	} else {
		_data_->_tmp0_ = FALSE;
	}
	if (_data_->_tmp0_) {
		_data_->_tmp1_ = _data_->self->priv->remove_animation;
		_data_->_tmp2_ = g_signal_connect_data (G_TYPE_CHECK_INSTANCE_CAST (_data_->_tmp1_, adw_animation_get_type (), AdwAnimation), "done", (GCallback) ____lambda23__adw_animation_done, block12_data_ref (_data_->_data12_), (GClosureNotify) block12_data_unref, 0);
		_data_->self->priv->remove_animation_done_id = _data_->_tmp2_;
		_data_->_tmp4_ = _data_->self->priv->remove_animation;
		_data_->_tmp5_ = adw_animation_get_state (G_TYPE_CHECK_INSTANCE_CAST (_data_->_tmp4_, adw_animation_get_type (), AdwAnimation));
		_data_->_tmp6_ = _data_->_tmp5_;
		if (_data_->_tmp6_ == ADW_ANIMATION_PLAYING) {
			_data_->_tmp7_ = _data_->self->priv->animation_target;
			_data_->_tmp8_ = animation_value_target_get_progress (_data_->_tmp7_);
			_data_->_tmp9_ = _data_->_tmp8_;
			_data_->_tmp3_ = _data_->_tmp9_;
		} else {
			_data_->_tmp3_ = 1.0;
		}
		_data_->_tmp10_ = _data_->self->priv->remove_animation;
		adw_timed_animation_set_value_from (_data_->_tmp10_, _data_->_tmp3_);
		_data_->_tmp11_ = _data_->self->priv->remove_animation;
		adw_timed_animation_set_value_to (_data_->_tmp11_, 0.0);
		_data_->_tmp12_ = _data_->self->priv->remove_animation;
		adw_animation_play (G_TYPE_CHECK_INSTANCE_CAST (_data_->_tmp12_, adw_animation_get_type (), AdwAnimation));
		_data_->_state_ = 1;
		return FALSE;
		_state_1:
		;
	} else {
		sway_notification_center_notification_group_animation_value_changed (_data_->self, 0.0);
	}
	if (_data_->self->priv->remove_animation_done_id > ((gulong) 0)) {
		_data_->_tmp13_ = _data_->self->priv->remove_animation;
		g_signal_handler_disconnect (G_TYPE_CHECK_INSTANCE_CAST (_data_->_tmp13_, G_TYPE_OBJECT, GObject), _data_->self->priv->remove_animation_done_id);
		_data_->self->priv->remove_animation_done_id = (gulong) 0;
	}
	_g_object_unref0 (_data_->self->priv->remove_animation);
	_data_->self->priv->remove_animation = NULL;
	_data_->result = TRUE;
	block12_data_unref (_data_->_data12_);
	_data_->_data12_ = NULL;
	g_task_return_pointer (_data_->_async_result, _data_, NULL);
	if (_data_->_state_ != 0) {
		while (!g_task_get_completed (_data_->_async_result)) {
			g_main_context_iteration (g_task_get_context (_data_->_async_result), TRUE);
		}
	}
	g_object_unref (_data_->_async_result);
	return FALSE;
}

static void
sway_notification_center_notification_group_real_snapshot (GtkWidget* base,
                                                           GtkSnapshot* snapshot)
{
	SwayNotificationCenterNotificationGroup * self;
	AnimationValueTarget* _tmp0_;
	gdouble _tmp1_;
	gdouble _tmp2_;
	self = G_TYPE_CHECK_INSTANCE_CAST (base, SWAY_NOTIFICATION_CENTER_TYPE_NOTIFICATION_GROUP, SwayNotificationCenterNotificationGroup);
	g_return_if_fail (G_TYPE_CHECK_INSTANCE_TYPE (snapshot, gtk_snapshot_get_type ()));
	if (!gtk_widget_should_layout (G_TYPE_CHECK_INSTANCE_CAST (G_TYPE_CHECK_INSTANCE_CAST (self, gtk_list_box_row_get_type (), GtkListBoxRow), gtk_widget_get_type (), GtkWidget))) {
		return;
	}
	_tmp0_ = self->priv->animation_target;
	_tmp1_ = animation_value_target_get_progress (_tmp0_);
	_tmp2_ = _tmp1_;
	gtk_snapshot_push_opacity (snapshot, _tmp2_);
	GTK_WIDGET_CLASS (sway_notification_center_notification_group_parent_class)->snapshot (G_TYPE_CHECK_INSTANCE_CAST (G_TYPE_CHECK_INSTANCE_CAST (self, gtk_list_box_row_get_type (), GtkListBoxRow), gtk_widget_get_type (), GtkWidget), snapshot);
	gtk_snapshot_pop (snapshot);
}

static void
sway_notification_center_notification_group_update_state (SwayNotificationCenterNotificationGroup* self)
{
	SwayNotificationCenterNotificationGroupState _tmp0_ = 0;
	SwayNotificationCenterExpandableGroup* _tmp1_;
	guint _tmp2_;
	guint _tmp3_;
	gboolean _tmp7_ = FALSE;
	gboolean _tmp8_;
	SwayNotificationCenterExpandableGroup* _tmp14_;
	static const char STYLE_CLASS_URGENT[] = "critical";
	static const char STYLE_CLASS_COLLAPSED[] = "collapsed";
	SwayNotificationCenterExpandableGroup* _tmp15_;
	gboolean _tmp16_;
	gboolean _tmp17_;
	GeeHashSet* _tmp18_;
	gboolean _tmp19_;
	gboolean _tmp20_;
	g_return_if_fail (SWAY_NOTIFICATION_CENTER_IS_NOTIFICATION_GROUP (self));
	_tmp1_ = self->priv->group;
	_tmp2_ = sway_notification_center_expandable_group_get_n_children (_tmp1_);
	_tmp3_ = _tmp2_;
	if (_tmp3_ > ((guint) SWAY_NOTIFICATION_CENTER_NOTIFICATION_GROUP_STATE_SINLGE)) {
		_tmp0_ = SWAY_NOTIFICATION_CENTER_NOTIFICATION_GROUP_STATE_MANY;
	} else {
		SwayNotificationCenterExpandableGroup* _tmp4_;
		guint _tmp5_;
		guint _tmp6_;
		_tmp4_ = self->priv->group;
		_tmp5_ = sway_notification_center_expandable_group_get_n_children (_tmp4_);
		_tmp6_ = _tmp5_;
		_tmp0_ = (SwayNotificationCenterNotificationGroupState) _tmp6_;
	}
	sway_notification_center_notification_group_set_state (self, _tmp0_);
	_tmp8_ = self->priv->_dismissed;
	if (!_tmp8_) {
		gboolean _tmp9_ = FALSE;
		SwayNotificationCenterNotificationGroupState _tmp10_;
		_tmp10_ = self->priv->_state;
		if (_tmp10_ < SWAY_NOTIFICATION_CENTER_NOTIFICATION_GROUP_STATE_MANY) {
			_tmp9_ = TRUE;
		} else {
			SwayNotificationCenterExpandableGroup* _tmp11_;
			gboolean _tmp12_;
			gboolean _tmp13_;
			_tmp11_ = self->priv->group;
			_tmp12_ = sway_notification_center_expandable_group_get_is_expanded (_tmp11_);
			_tmp13_ = _tmp12_;
			_tmp9_ = _tmp13_;
		}
		_tmp7_ = _tmp9_;
	} else {
		_tmp7_ = FALSE;
	}
	_tmp14_ = self->priv->group;
	gtk_widget_set_sensitive (G_TYPE_CHECK_INSTANCE_CAST (_tmp14_, gtk_widget_get_type (), GtkWidget), _tmp7_);
	_tmp15_ = self->priv->group;
	_tmp16_ = sway_notification_center_expandable_group_get_is_expanded (_tmp15_);
	_tmp17_ = _tmp16_;
	if (_tmp17_) {
		gtk_widget_remove_css_class (G_TYPE_CHECK_INSTANCE_CAST (self, gtk_widget_get_type (), GtkWidget), STYLE_CLASS_COLLAPSED);
	} else {
		if (!gtk_widget_has_css_class (G_TYPE_CHECK_INSTANCE_CAST (self, gtk_widget_get_type (), GtkWidget), STYLE_CLASS_COLLAPSED)) {
			gtk_widget_add_css_class (G_TYPE_CHECK_INSTANCE_CAST (self, gtk_widget_get_type (), GtkWidget), STYLE_CLASS_COLLAPSED);
		}
	}
	_tmp18_ = self->priv->urgent_notifications;
	_tmp19_ = gee_collection_get_is_empty (G_TYPE_CHECK_INSTANCE_CAST (_tmp18_, GEE_TYPE_COLLECTION, GeeCollection));
	_tmp20_ = _tmp19_;
	if (_tmp20_) {
		gtk_widget_remove_css_class (G_TYPE_CHECK_INSTANCE_CAST (self, gtk_widget_get_type (), GtkWidget), STYLE_CLASS_URGENT);
	} else {
		if (!gtk_widget_has_css_class (G_TYPE_CHECK_INSTANCE_CAST (self, gtk_widget_get_type (), GtkWidget), STYLE_CLASS_URGENT)) {
			gtk_widget_add_css_class (G_TYPE_CHECK_INSTANCE_CAST (self, gtk_widget_get_type (), GtkWidget), STYLE_CLASS_URGENT);
		}
	}
}

static void
sway_notification_center_notification_group_set_icon (SwayNotificationCenterNotificationGroup* self)
{
	SwayNotificationCenterNotificationGroupState _tmp0_;
	SwayNotificationCenterNotification* latest = NULL;
	SwayNotificationCenterNotification* _tmp1_;
	GIcon* icon = NULL;
	gboolean _tmp2_ = FALSE;
	gboolean _tmp3_ = FALSE;
	SwayNotificationCenterNotification* _tmp4_;
	g_return_if_fail (SWAY_NOTIFICATION_CENTER_IS_NOTIFICATION_GROUP (self));
	_tmp0_ = self->priv->_state;
	if (_tmp0_ == SWAY_NOTIFICATION_CENTER_NOTIFICATION_GROUP_STATE_EMPTY) {
		return;
	}
	_tmp1_ = sway_notification_center_notification_group_get_latest_notification (self);
	latest = _tmp1_;
	icon = NULL;
	_tmp4_ = latest;
	if (_tmp4_ != NULL) {
		SwayNotificationCenterNotification* _tmp5_;
		SwayNotificationCenterNotifyParams* _tmp6_;
		SwayNotificationCenterNotifyParams* _tmp7_;
		GDesktopAppInfo* _tmp8_;
		GDesktopAppInfo* _tmp9_;
		_tmp5_ = latest;
		_tmp6_ = sway_notification_center_notification_get_param (_tmp5_);
		_tmp7_ = _tmp6_;
		_tmp8_ = sway_notification_center_notify_params_get_desktop_app_info (_tmp7_);
		_tmp9_ = _tmp8_;
		_tmp3_ = _tmp9_ != NULL;
	} else {
		_tmp3_ = FALSE;
	}
	if (_tmp3_) {
		SwayNotificationCenterNotification* _tmp10_;
		SwayNotificationCenterNotifyParams* _tmp11_;
		SwayNotificationCenterNotifyParams* _tmp12_;
		GDesktopAppInfo* _tmp13_;
		GDesktopAppInfo* _tmp14_;
		GIcon* _tmp15_;
		GIcon* _tmp16_;
		GIcon* _tmp17_;
		_tmp10_ = latest;
		_tmp11_ = sway_notification_center_notification_get_param (_tmp10_);
		_tmp12_ = _tmp11_;
		_tmp13_ = sway_notification_center_notify_params_get_desktop_app_info (_tmp12_);
		_tmp14_ = _tmp13_;
		_tmp15_ = g_app_info_get_icon (G_TYPE_CHECK_INSTANCE_CAST (_tmp14_, g_app_info_get_type (), GAppInfo));
		_tmp16_ = _g_object_ref0 (_tmp15_);
		_g_object_unref0 (icon);
		icon = _tmp16_;
		_tmp17_ = icon;
		_tmp2_ = _tmp17_ != NULL;
	} else {
		_tmp2_ = FALSE;
	}
	if (_tmp2_) {
		GtkImage* _tmp18_;
		GIcon* _tmp19_;
		_tmp18_ = self->priv->app_icon;
		_tmp19_ = icon;
		gtk_image_set_from_gicon (_tmp18_, _tmp19_);
	} else {
		GtkImage* _tmp20_;
		_tmp20_ = self->priv->app_icon;
		gtk_image_set_from_icon_name (_tmp20_, "application-x-executable-symbolic");
	}
	_g_object_unref0 (icon);
}

static SwayNotificationCenterNotification*
sway_notification_center_notification_group_find_notification (SwayNotificationCenterNotificationGroup* self,
                                                               guint32 id)
{
	SwayNotificationCenterNotification* notification = NULL;
	GeeHashMap* _tmp0_;
	gpointer _tmp1_;
	gboolean _tmp2_ = FALSE;
	SwayNotificationCenterNotification* _tmp3_;
	SwayNotificationCenterNotification* _tmp9_;
	SwayNotificationCenterNotification* result;
	g_return_val_if_fail (SWAY_NOTIFICATION_CENTER_IS_NOTIFICATION_GROUP (self), NULL);
	_tmp0_ = self->priv->_notification_ids;
	_tmp1_ = gee_abstract_map_get (G_TYPE_CHECK_INSTANCE_CAST (_tmp0_, GEE_TYPE_ABSTRACT_MAP, GeeAbstractMap), (gpointer) ((guintptr) id));
	notification = (SwayNotificationCenterNotification*) _tmp1_;
	_tmp3_ = notification;
	if (_tmp3_ == NULL) {
		_tmp2_ = TRUE;
	} else {
		SwayNotificationCenterNotification* _tmp4_;
		SwayNotificationCenterNotifyParams* _tmp5_;
		SwayNotificationCenterNotifyParams* _tmp6_;
		guint32 _tmp7_;
		guint32 _tmp8_;
		_tmp4_ = notification;
		_tmp5_ = sway_notification_center_notification_get_param (_tmp4_);
		_tmp6_ = _tmp5_;
		_tmp7_ = sway_notification_center_notify_params_get_applied_id (_tmp6_);
		_tmp8_ = _tmp7_;
		_tmp2_ = _tmp8_ != id;
	}
	if (_tmp2_) {
		result = NULL;
		return result;
	}
	_tmp9_ = notification;
	result = _tmp9_;
	return result;
}

void
sway_notification_center_notification_group_set_expanded (SwayNotificationCenterNotificationGroup* self,
                                                          gboolean state)
{
	gboolean _tmp0_;
	SwayNotificationCenterExpandableGroup* _tmp1_;
	GtkRevealer* _tmp2_;
	DismissibleWidget* _tmp3_;
	g_return_if_fail (SWAY_NOTIFICATION_CENTER_IS_NOTIFICATION_GROUP (self));
	_tmp0_ = self->priv->_dismissed;
	if (_tmp0_) {
		state = FALSE;
	}
	_tmp1_ = self->priv->group;
	sway_notification_center_expandable_group_set_expanded (_tmp1_, state);
	_tmp2_ = self->priv->revealer;
	gtk_revealer_set_reveal_child (_tmp2_, state);
	_tmp3_ = self->priv->dismissible;
	dismissible_widget_set_can_dismiss (_tmp3_, !state);
}

gboolean
sway_notification_center_notification_group_toggle_expanded (SwayNotificationCenterNotificationGroup* self)
{
	gboolean state = FALSE;
	SwayNotificationCenterExpandableGroup* _tmp0_;
	gboolean _tmp1_;
	gboolean _tmp2_;
	gboolean result;
	g_return_val_if_fail (SWAY_NOTIFICATION_CENTER_IS_NOTIFICATION_GROUP (self), FALSE);
	_tmp0_ = self->priv->group;
	_tmp1_ = sway_notification_center_expandable_group_get_is_expanded (_tmp0_);
	_tmp2_ = _tmp1_;
	state = !_tmp2_;
	sway_notification_center_notification_group_set_expanded (self, state);
	result = state;
	return result;
}

void
sway_notification_center_notification_group_add_notification (SwayNotificationCenterNotificationGroup* self,
                                                              SwayNotificationCenterNotification* noti)
{
	SwayNotificationCenterNotifyParams* _tmp0_;
	SwayNotificationCenterNotifyParams* _tmp1_;
	SwayNotificationCenterUrgencyLevels _tmp2_;
	SwayNotificationCenterUrgencyLevels _tmp3_;
	SwayNotificationCenterExpandableGroup* _tmp9_;
	GeeHashMap* _tmp10_;
	SwayNotificationCenterNotifyParams* _tmp11_;
	SwayNotificationCenterNotifyParams* _tmp12_;
	guint32 _tmp13_;
	guint32 _tmp14_;
	g_return_if_fail (SWAY_NOTIFICATION_CENTER_IS_NOTIFICATION_GROUP (self));
	g_return_if_fail (SWAY_NOTIFICATION_CENTER_IS_NOTIFICATION (noti));
	_tmp0_ = sway_notification_center_notification_get_param (noti);
	_tmp1_ = _tmp0_;
	_tmp2_ = sway_notification_center_notify_params_get_urgency (_tmp1_);
	_tmp3_ = _tmp2_;
	if (_tmp3_ == SWAY_NOTIFICATION_CENTER_URGENCY_LEVELS_CRITICAL) {
		GeeHashSet* _tmp4_;
		SwayNotificationCenterNotifyParams* _tmp5_;
		SwayNotificationCenterNotifyParams* _tmp6_;
		guint32 _tmp7_;
		guint32 _tmp8_;
		_tmp4_ = self->priv->urgent_notifications;
		_tmp5_ = sway_notification_center_notification_get_param (noti);
		_tmp6_ = _tmp5_;
		_tmp7_ = sway_notification_center_notify_params_get_applied_id (_tmp6_);
		_tmp8_ = _tmp7_;
		gee_abstract_collection_add (G_TYPE_CHECK_INSTANCE_CAST (_tmp4_, GEE_TYPE_ABSTRACT_COLLECTION, GeeAbstractCollection), (gpointer) ((guintptr) _tmp8_));
	}
	_tmp9_ = self->priv->group;
	sway_notification_center_expandable_group_add (_tmp9_, G_TYPE_CHECK_INSTANCE_CAST (noti, gtk_widget_get_type (), GtkWidget));
	_tmp10_ = self->priv->_notification_ids;
	_tmp11_ = sway_notification_center_notification_get_param (noti);
	_tmp12_ = _tmp11_;
	_tmp13_ = sway_notification_center_notify_params_get_applied_id (_tmp12_);
	_tmp14_ = _tmp13_;
	gee_abstract_map_set (G_TYPE_CHECK_INSTANCE_CAST (_tmp10_, GEE_TYPE_ABSTRACT_MAP, GeeAbstractMap), (gpointer) ((guintptr) _tmp14_), noti);
	sway_notification_center_notification_group_update_state (self);
	sway_notification_center_notification_group_set_icon (self);
}

gboolean
sway_notification_center_notification_group_replace_notification (SwayNotificationCenterNotificationGroup* self,
                                                                  guint32 id,
                                                                  SwayNotificationCenterNotifyParams* new_params)
{
	SwayNotificationCenterNotification* notification = NULL;
	SwayNotificationCenterNotification* _tmp0_;
	SwayNotificationCenterNotification* _tmp1_;
	GeeHashMap* _tmp2_;
	GeeHashMap* _tmp3_;
	guint32 _tmp4_;
	guint32 _tmp5_;
	SwayNotificationCenterNotification* _tmp6_;
	SwayNotificationCenterNotification* _tmp7_;
	gboolean result;
	g_return_val_if_fail (SWAY_NOTIFICATION_CENTER_IS_NOTIFICATION_GROUP (self), FALSE);
	g_return_val_if_fail (SWAY_NOTIFICATION_CENTER_IS_NOTIFY_PARAMS (new_params), FALSE);
	_tmp0_ = sway_notification_center_notification_group_find_notification (self, id);
	notification = _tmp0_;
	_tmp1_ = notification;
	if (_tmp1_ == NULL) {
		result = FALSE;
		return result;
	}
	_tmp2_ = self->priv->_notification_ids;
	gee_abstract_map_unset (G_TYPE_CHECK_INSTANCE_CAST (_tmp2_, GEE_TYPE_ABSTRACT_MAP, GeeAbstractMap), (gpointer) ((guintptr) id), NULL);
	_tmp3_ = self->priv->_notification_ids;
	_tmp4_ = sway_notification_center_notify_params_get_applied_id (new_params);
	_tmp5_ = _tmp4_;
	_tmp6_ = notification;
	gee_abstract_map_set (G_TYPE_CHECK_INSTANCE_CAST (_tmp3_, GEE_TYPE_ABSTRACT_MAP, GeeAbstractMap), (gpointer) ((guintptr) _tmp5_), _tmp6_);
	_tmp7_ = notification;
	sway_notification_center_notification_replace_notification (_tmp7_, new_params);
	result = TRUE;
	return result;
}

static void
sway_notification_center_notification_group_remove_notification_data_free (gpointer _data)
{
	SwayNotificationCenterNotificationGroupRemoveNotificationData* _data_;
	_data_ = _data;
	_g_object_unref0 (_data_->self);
	g_slice_free (SwayNotificationCenterNotificationGroupRemoveNotificationData, _data_);
}

void
sway_notification_center_notification_group_remove_notification (SwayNotificationCenterNotificationGroup* self,
                                                                 guint32 id,
                                                                 GAsyncReadyCallback _callback_,
                                                                 gpointer _user_data_)
{
	SwayNotificationCenterNotificationGroupRemoveNotificationData* _data_;
	SwayNotificationCenterNotificationGroup* _tmp0_;
	g_return_if_fail (SWAY_NOTIFICATION_CENTER_IS_NOTIFICATION_GROUP (self));
	_data_ = g_slice_new0 (SwayNotificationCenterNotificationGroupRemoveNotificationData);
	_data_->_async_result = g_task_new (G_OBJECT (self), NULL, _callback_, _user_data_);
	g_task_set_task_data (_data_->_async_result, _data_, sway_notification_center_notification_group_remove_notification_data_free);
	_tmp0_ = _g_object_ref0 (self);
	_data_->self = _tmp0_;
	_data_->id = id;
	sway_notification_center_notification_group_remove_notification_co (_data_);
}

gboolean
sway_notification_center_notification_group_remove_notification_finish (SwayNotificationCenterNotificationGroup* self,
                                                                        GAsyncResult* _res_)
{
	gboolean result;
	SwayNotificationCenterNotificationGroupRemoveNotificationData* _data_;
	_data_ = g_task_propagate_pointer (G_TASK (_res_), NULL);
	result = _data_->result;
	return result;
}

static void
sway_notification_center_notification_group_remove_notification_ready (GObject* source_object,
                                                                       GAsyncResult* _res_,
                                                                       gpointer _user_data_)
{
	SwayNotificationCenterNotificationGroupRemoveNotificationData* _data_;
	_data_ = _user_data_;
	_data_->_source_object_ = source_object;
	_data_->_res_ = _res_;
	sway_notification_center_notification_group_remove_notification_co (_data_);
}

static gboolean
sway_notification_center_notification_group_remove_notification_co (SwayNotificationCenterNotificationGroupRemoveNotificationData* _data_)
{
	switch (_data_->_state_) {
		case 0:
		goto _state_0;
		case 1:
		goto _state_1;
		case 2:
		goto _state_2;
		default:
		g_assert_not_reached ();
	}
	_state_0:
	sway_notification_center_notification_group_update_state (_data_->self);
	_data_->_tmp0_ = sway_notification_center_notification_group_find_notification (_data_->self, _data_->id);
	_data_->notification = _data_->_tmp0_;
	_data_->_tmp1_ = _data_->notification;
	if (_data_->_tmp1_ == NULL) {
		g_warn_if_reached ();
		_data_->result = FALSE;
		g_task_return_pointer (_data_->_async_result, _data_, NULL);
		if (_data_->_state_ != 0) {
			while (!g_task_get_completed (_data_->_async_result)) {
				g_main_context_iteration (g_task_get_context (_data_->_async_result), TRUE);
			}
		}
		g_object_unref (_data_->_async_result);
		return FALSE;
	}
	_data_->_tmp2_ = _data_->self->priv->urgent_notifications;
	_data_->_tmp3_ = _data_->notification;
	_data_->_tmp4_ = sway_notification_center_notification_get_param (_data_->_tmp3_);
	_data_->_tmp5_ = _data_->_tmp4_;
	_data_->_tmp6_ = sway_notification_center_notify_params_get_applied_id (_data_->_tmp5_);
	_data_->_tmp7_ = _data_->_tmp6_;
	gee_abstract_collection_remove (G_TYPE_CHECK_INSTANCE_CAST (_data_->_tmp2_, GEE_TYPE_ABSTRACT_COLLECTION, GeeAbstractCollection), (gpointer) ((guintptr) _data_->_tmp7_));
	_data_->_tmp8_ = _data_->self->priv->_notification_ids;
	_data_->_tmp9_ = _data_->notification;
	_data_->_tmp10_ = sway_notification_center_notification_get_param (_data_->_tmp9_);
	_data_->_tmp11_ = _data_->_tmp10_;
	_data_->_tmp12_ = sway_notification_center_notify_params_get_applied_id (_data_->_tmp11_);
	_data_->_tmp13_ = _data_->_tmp12_;
	gee_abstract_map_unset (G_TYPE_CHECK_INSTANCE_CAST (_data_->_tmp8_, GEE_TYPE_ABSTRACT_MAP, GeeAbstractMap), (gpointer) ((guintptr) _data_->_tmp13_), NULL);
	_data_->_tmp14_ = _data_->notification;
	sway_notification_center_notification_remove_noti_timeout (_data_->_tmp14_);
	_data_->_tmp15_ = _data_->self->priv->_state;
	if (_data_->_tmp15_ == SWAY_NOTIFICATION_CENTER_NOTIFICATION_GROUP_STATE_MANY) {
		_data_->_tmp16_ = _data_->notification;
		_data_->_tmp17_ = _data_->self->priv->_dismissed_by_swipe;
		_data_->_state_ = 1;
		sway_notification_center_notification_remove_notification (_data_->_tmp16_, !_data_->_tmp17_, sway_notification_center_notification_group_remove_notification_ready, _data_);
		return FALSE;
		_state_1:
		sway_notification_center_notification_remove_notification_finish (_data_->_tmp16_, _data_->_res_);
	} else {
		_data_->_tmp18_ = _data_->self->priv->_state;
		if (_data_->_tmp18_ == SWAY_NOTIFICATION_CENTER_NOTIFICATION_GROUP_STATE_SINLGE) {
			sway_notification_center_notification_group_set_dismissed (_data_->self, TRUE);
			_data_->_tmp19_ = _data_->notification;
			_data_->_tmp20_ = sway_notification_center_notification_get_dismissed_by_swipe (_data_->_tmp19_);
			_data_->_tmp21_ = _data_->_tmp20_;
			_data_->_state_ = 2;
			sway_notification_center_notification_group_play_remove_animation (_data_->self, !_data_->_tmp21_, sway_notification_center_notification_group_remove_notification_ready, _data_);
			return FALSE;
			_state_2:
			if (!sway_notification_center_notification_group_play_remove_animation_finish (_data_->self, _data_->_res_)) {
				g_debug ("notificationGroup.vala:361: Trying to play group removal animation twi" \
"ce. Ignoring");
				_data_->result = FALSE;
				g_task_return_pointer (_data_->_async_result, _data_, NULL);
				if (_data_->_state_ != 0) {
					while (!g_task_get_completed (_data_->_async_result)) {
						g_main_context_iteration (g_task_get_context (_data_->_async_result), TRUE);
					}
				}
				g_object_unref (_data_->_async_result);
				return FALSE;
			}
		} else {
			g_warn_if_reached ();
		}
	}
	_data_->_tmp22_ = _data_->self->priv->group;
	_data_->_tmp23_ = _data_->notification;
	sway_notification_center_expandable_group_remove (_data_->_tmp22_, G_TYPE_CHECK_INSTANCE_CAST (_data_->_tmp23_, gtk_widget_get_type (), GtkWidget));
	sway_notification_center_notification_group_update_state (_data_->self);
	_data_->_tmp24_ = _data_->self->priv->_state;
	if (_data_->_tmp24_ == SWAY_NOTIFICATION_CENTER_NOTIFICATION_GROUP_STATE_SINLGE) {
		sway_notification_center_notification_group_set_expanded (_data_->self, FALSE);
		g_signal_emit (_data_->self, sway_notification_center_notification_group_signals[SWAY_NOTIFICATION_CENTER_NOTIFICATION_GROUP_ON_EXPAND_CHANGE_SIGNAL], 0, FALSE);
	}
	_data_->result = TRUE;
	g_task_return_pointer (_data_->_async_result, _data_, NULL);
	if (_data_->_state_ != 0) {
		while (!g_task_get_completed (_data_->_async_result)) {
			g_main_context_iteration (g_task_get_context (_data_->_async_result), TRUE);
		}
	}
	g_object_unref (_data_->_async_result);
	return FALSE;
}

static void
sway_notification_center_notification_group_remove_all_notifications_data_free (gpointer _data)
{
	SwayNotificationCenterNotificationGroupRemoveAllNotificationsData* _data_;
	_data_ = _data;
	_g_object_unref0 (_data_->self);
	g_slice_free (SwayNotificationCenterNotificationGroupRemoveAllNotificationsData, _data_);
}

void
sway_notification_center_notification_group_remove_all_notifications (SwayNotificationCenterNotificationGroup* self,
                                                                      gboolean transition,
                                                                      GAsyncReadyCallback _callback_,
                                                                      gpointer _user_data_)
{
	SwayNotificationCenterNotificationGroupRemoveAllNotificationsData* _data_;
	SwayNotificationCenterNotificationGroup* _tmp0_;
	g_return_if_fail (SWAY_NOTIFICATION_CENTER_IS_NOTIFICATION_GROUP (self));
	_data_ = g_slice_new0 (SwayNotificationCenterNotificationGroupRemoveAllNotificationsData);
	_data_->_async_result = g_task_new (G_OBJECT (self), NULL, _callback_, _user_data_);
	g_task_set_task_data (_data_->_async_result, _data_, sway_notification_center_notification_group_remove_all_notifications_data_free);
	_tmp0_ = _g_object_ref0 (self);
	_data_->self = _tmp0_;
	_data_->transition = transition;
	sway_notification_center_notification_group_remove_all_notifications_co (_data_);
}

gboolean
sway_notification_center_notification_group_remove_all_notifications_finish (SwayNotificationCenterNotificationGroup* self,
                                                                             GAsyncResult* _res_)
{
	gboolean result;
	SwayNotificationCenterNotificationGroupRemoveAllNotificationsData* _data_;
	_data_ = g_task_propagate_pointer (G_TASK (_res_), NULL);
	result = _data_->result;
	return result;
}

static void
sway_notification_center_notification_group_remove_all_notifications_ready (GObject* source_object,
                                                                            GAsyncResult* _res_,
                                                                            gpointer _user_data_)
{
	SwayNotificationCenterNotificationGroupRemoveAllNotificationsData* _data_;
	_data_ = _user_data_;
	_data_->_source_object_ = source_object;
	_data_->_res_ = _res_;
	sway_notification_center_notification_group_remove_all_notifications_co (_data_);
}

static gboolean
sway_notification_center_notification_group_remove_all_notifications_co (SwayNotificationCenterNotificationGroupRemoveAllNotificationsData* _data_)
{
	switch (_data_->_state_) {
		case 0:
		goto _state_0;
		case 1:
		goto _state_1;
		default:
		g_assert_not_reached ();
	}
	_state_0:
	sway_notification_center_notification_group_set_dismissed (_data_->self, TRUE);
	_data_->_tmp0_ = _data_->self->priv->close_button;
	sway_notification_center_notification_close_button_set_reveal (_data_->_tmp0_, FALSE);
	_data_->_tmp1_ = _data_->self->priv->urgent_notifications;
	gee_abstract_collection_clear (G_TYPE_CHECK_INSTANCE_CAST (_data_->_tmp1_, GEE_TYPE_ABSTRACT_COLLECTION, GeeAbstractCollection));
	_data_->_tmp2_ = _data_->self->priv->_notification_ids;
	gee_abstract_map_clear (G_TYPE_CHECK_INSTANCE_CAST (_data_->_tmp2_, GEE_TYPE_ABSTRACT_MAP, GeeAbstractMap));
	_data_->_tmp3_ = _data_->self->priv->_dismissed_by_swipe;
	_data_->dismissed_by_swipe = _data_->_tmp3_;
	_data_->_tmp4_ = _data_->self->priv->_state;
	if (_data_->_tmp4_ == SWAY_NOTIFICATION_CENTER_NOTIFICATION_GROUP_STATE_SINLGE) {
		_data_->_tmp5_ = _data_->self->priv->group;
		_data_->_tmp6_ = sway_notification_center_expandable_group_get_first_widget (_data_->_tmp5_, NULL, NULL);
		_data_->noti = G_TYPE_CHECK_INSTANCE_CAST (_data_->_tmp6_, SWAY_NOTIFICATION_CENTER_TYPE_NOTIFICATION, SwayNotificationCenterNotification);
		_data_->_tmp7_ = _data_->noti;
		if (_data_->_tmp7_ != NULL) {
			_data_->_tmp8_ = _data_->noti;
			_data_->_tmp9_ = sway_notification_center_notification_get_dismissed_by_swipe (_data_->_tmp8_);
			_data_->_tmp10_ = _data_->_tmp9_;
			_data_->dismissed_by_swipe |= _data_->_tmp10_;
		}
	}
	_data_->_tmp11_ = _data_->self->priv->group;
	if (sway_notification_center_expandable_group_is_empty (_data_->_tmp11_)) {
		g_debug ("notificationGroup.vala:394: Skiping removal of all notifications as th" \
"e group is already empty");
		_data_->result = FALSE;
		g_task_return_pointer (_data_->_async_result, _data_, NULL);
		if (_data_->_state_ != 0) {
			while (!g_task_get_completed (_data_->_async_result)) {
				g_main_context_iteration (g_task_get_context (_data_->_async_result), TRUE);
			}
		}
		g_object_unref (_data_->_async_result);
		return FALSE;
	}
	if (_data_->transition) {
		_data_->_tmp12_ = !_data_->dismissed_by_swipe;
	} else {
		_data_->_tmp12_ = FALSE;
	}
	_data_->_state_ = 1;
	sway_notification_center_notification_group_play_remove_animation (_data_->self, _data_->_tmp12_, sway_notification_center_notification_group_remove_all_notifications_ready, _data_);
	return FALSE;
	_state_1:
	if (!sway_notification_center_notification_group_play_remove_animation_finish (_data_->self, _data_->_res_)) {
		g_debug ("notificationGroup.vala:399: Trying to play group removal animation twi" \
"ce. Ignoring");
		_data_->result = FALSE;
		g_task_return_pointer (_data_->_async_result, _data_, NULL);
		if (_data_->_state_ != 0) {
			while (!g_task_get_completed (_data_->_async_result)) {
				g_main_context_iteration (g_task_get_context (_data_->_async_result), TRUE);
			}
		}
		g_object_unref (_data_->_async_result);
		return FALSE;
	}
	_data_->_tmp13_ = _data_->self->priv->group;
	sway_notification_center_expandable_group_remove_all (_data_->_tmp13_);
	_data_->result = TRUE;
	g_task_return_pointer (_data_->_async_result, _data_, NULL);
	if (_data_->_state_ != 0) {
		while (!g_task_get_completed (_data_->_async_result)) {
			g_main_context_iteration (g_task_get_context (_data_->_async_result), TRUE);
		}
	}
	g_object_unref (_data_->_async_result);
	return FALSE;
}

void
sway_notification_center_notification_group_request_dismiss_all_notifications (SwayNotificationCenterNotificationGroup* self)
{
	gboolean _tmp0_;
	SwayNotificationCenterNotiDaemon* _tmp1_;
	const gchar* _tmp2_;
	GeeHashMap* _tmp3_;
	GeeSet* _tmp4_;
	GeeSet* _tmp5_;
	GeeSet* _tmp6_;
	g_return_if_fail (SWAY_NOTIFICATION_CENTER_IS_NOTIFICATION_GROUP (self));
	_tmp0_ = self->priv->_dismissed;
	if (_tmp0_) {
		return;
	}
	sway_notification_center_notification_group_set_dismissed (self, TRUE);
	_tmp1_ = sway_notification_center_noti_daemon;
	_tmp2_ = self->name_id;
	_tmp3_ = self->priv->_notification_ids;
	_tmp4_ = gee_abstract_map_get_keys (G_TYPE_CHECK_INSTANCE_CAST (_tmp3_, GEE_TYPE_ABSTRACT_MAP, GeeAbstractMap));
	_tmp5_ = _tmp4_;
	_tmp6_ = _tmp5_;
	sway_notification_center_noti_daemon_request_dismiss_notification_group (_tmp1_, _tmp2_, _tmp6_, SWAY_NOTIFICATION_CENTER_CLOSED_REASONS_DISMISSED);
	_g_object_unref0 (_tmp6_);
}

/** Gets the latest, non-dismissed notification */
static gboolean
__lambda33_ (SwayNotificationCenterNotificationGroup* self,
             GtkWidget* widget)
{
	SwayNotificationCenterNotification* notification = NULL;
	gboolean _tmp0_ = FALSE;
	SwayNotificationCenterNotification* _tmp1_;
	gboolean result;
	g_return_val_if_fail (G_TYPE_CHECK_INSTANCE_TYPE (widget, gtk_widget_get_type ()), FALSE);
	notification = G_TYPE_CHECK_INSTANCE_CAST (widget, SWAY_NOTIFICATION_CENTER_TYPE_NOTIFICATION, SwayNotificationCenterNotification);
	_tmp1_ = notification;
	if (_tmp1_ != NULL) {
		SwayNotificationCenterNotification* _tmp2_;
		gboolean _tmp3_;
		gboolean _tmp4_;
		_tmp2_ = notification;
		_tmp3_ = sway_notification_center_notification_get_dismissed (_tmp2_);
		_tmp4_ = _tmp3_;
		_tmp0_ = !_tmp4_;
	} else {
		_tmp0_ = FALSE;
	}
	result = _tmp0_;
	return result;
}

static gboolean
___lambda33__sway_notification_center_expandable_group_widget_filter_delegate (GtkWidget* widget,
                                                                               gpointer self)
{
	gboolean result;
	result = __lambda33_ ((SwayNotificationCenterNotificationGroup*) self, widget);
	return result;
}

SwayNotificationCenterNotification*
sway_notification_center_notification_group_get_latest_notification (SwayNotificationCenterNotificationGroup* self)
{
	SwayNotificationCenterExpandableGroup* _tmp0_;
	GtkWidget* _tmp1_;
	SwayNotificationCenterNotification* result;
	g_return_val_if_fail (SWAY_NOTIFICATION_CENTER_IS_NOTIFICATION_GROUP (self), NULL);
	_tmp0_ = self->priv->group;
	_tmp1_ = sway_notification_center_expandable_group_get_first_widget (_tmp0_, ___lambda33__sway_notification_center_expandable_group_widget_filter_delegate, self);
	result = G_TYPE_CHECK_INSTANCE_CAST (_tmp1_, SWAY_NOTIFICATION_CENTER_TYPE_NOTIFICATION, SwayNotificationCenterNotification);
	return result;
}

gint64
sway_notification_center_notification_group_get_time (SwayNotificationCenterNotificationGroup* self)
{
	SwayNotificationCenterNotification* notification = NULL;
	SwayNotificationCenterNotification* _tmp0_;
	gboolean _tmp1_ = FALSE;
	GeeHashMap* _tmp2_;
	gboolean _tmp3_;
	gboolean _tmp4_;
	SwayNotificationCenterNotification* _tmp6_;
	SwayNotificationCenterNotifyParams* _tmp7_;
	SwayNotificationCenterNotifyParams* _tmp8_;
	gint64 _tmp9_;
	gint64 _tmp10_;
	gint64 result;
	g_return_val_if_fail (SWAY_NOTIFICATION_CENTER_IS_NOTIFICATION_GROUP (self), 0LL);
	_tmp0_ = sway_notification_center_notification_group_get_latest_notification (self);
	notification = _tmp0_;
	_tmp2_ = self->priv->_notification_ids;
	_tmp3_ = gee_map_get_is_empty (G_TYPE_CHECK_INSTANCE_CAST (_tmp2_, GEE_TYPE_MAP, GeeMap));
	_tmp4_ = _tmp3_;
	if (_tmp4_) {
		_tmp1_ = TRUE;
	} else {
		SwayNotificationCenterNotification* _tmp5_;
		_tmp5_ = notification;
		_tmp1_ = _tmp5_ == NULL;
	}
	if (_tmp1_) {
		result = (gint64) -1;
		return result;
	}
	_tmp6_ = notification;
	_tmp7_ = sway_notification_center_notification_get_param (_tmp6_);
	_tmp8_ = _tmp7_;
	_tmp9_ = sway_notification_center_notify_params_get_time (_tmp8_);
	_tmp10_ = _tmp9_;
	result = _tmp10_;
	return result;
}

gboolean
sway_notification_center_notification_group_get_is_urgent (SwayNotificationCenterNotificationGroup* self)
{
	GeeHashSet* _tmp0_;
	gboolean _tmp1_;
	gboolean _tmp2_;
	gboolean result;
	g_return_val_if_fail (SWAY_NOTIFICATION_CENTER_IS_NOTIFICATION_GROUP (self), FALSE);
	_tmp0_ = self->priv->urgent_notifications;
	_tmp1_ = gee_collection_get_is_empty (G_TYPE_CHECK_INSTANCE_CAST (_tmp0_, GEE_TYPE_COLLECTION, GeeCollection));
	_tmp2_ = _tmp1_;
	result = !_tmp2_;
	return result;
}

guint
sway_notification_center_notification_group_get_num_notifications (SwayNotificationCenterNotificationGroup* self)
{
	SwayNotificationCenterExpandableGroup* _tmp0_;
	guint _tmp1_;
	guint _tmp2_;
	guint result;
	g_return_val_if_fail (SWAY_NOTIFICATION_CENTER_IS_NOTIFICATION_GROUP (self), 0U);
	_tmp0_ = self->priv->group;
	_tmp1_ = sway_notification_center_expandable_group_get_n_children (_tmp0_);
	_tmp2_ = _tmp1_;
	result = _tmp2_;
	return result;
}

void
sway_notification_center_notification_group_update (SwayNotificationCenterNotificationGroup* self)
{
	g_return_if_fail (SWAY_NOTIFICATION_CENTER_IS_NOTIFICATION_GROUP (self));
	sway_notification_center_notification_group_set_icon (self);
	{
		GeeIterator* _notification_it = NULL;
		GeeHashMap* _tmp0_;
		GeeCollection* _tmp1_;
		GeeCollection* _tmp2_;
		GeeCollection* _tmp3_;
		GeeIterator* _tmp4_;
		GeeIterator* _tmp5_;
		_tmp0_ = self->priv->_notification_ids;
		_tmp1_ = gee_abstract_map_get_values (G_TYPE_CHECK_INSTANCE_CAST (_tmp0_, GEE_TYPE_ABSTRACT_MAP, GeeAbstractMap));
		_tmp2_ = _tmp1_;
		_tmp3_ = _tmp2_;
		_tmp4_ = gee_iterable_iterator (G_TYPE_CHECK_INSTANCE_CAST (_tmp3_, GEE_TYPE_ITERABLE, GeeIterable));
		_tmp5_ = _tmp4_;
		_g_object_unref0 (_tmp3_);
		_notification_it = _tmp5_;
		while (TRUE) {
			GeeIterator* _tmp6_;
			SwayNotificationCenterNotification* notification = NULL;
			GeeIterator* _tmp7_;
			gpointer _tmp8_;
			SwayNotificationCenterNotification* _tmp9_;
			_tmp6_ = _notification_it;
			if (!gee_iterator_next (_tmp6_)) {
				break;
			}
			_tmp7_ = _notification_it;
			_tmp8_ = gee_iterator_get (_tmp7_);
			notification = (SwayNotificationCenterNotification*) _tmp8_;
			_tmp9_ = notification;
			if (_tmp9_ != NULL) {
				SwayNotificationCenterNotification* _tmp10_;
				_tmp10_ = notification;
				sway_notification_center_notification_set_time (_tmp10_);
			}
		}
		_g_object_unref0 (_notification_it);
	}
}

gfloat
sway_notification_center_notification_group_get_relative_y (SwayNotificationCenterNotificationGroup* self,
                                                            GtkWidget* parent)
{
	graphene_point_t point = {0};
	graphene_point_t dest_point = {0};
	graphene_point_t _tmp0_;
	graphene_point_t _tmp1_ = {0};
	graphene_point_t _tmp2_;
	gfloat result;
	g_return_val_if_fail (SWAY_NOTIFICATION_CENTER_IS_NOTIFICATION_GROUP (self), 0.0F);
	g_return_val_if_fail (G_TYPE_CHECK_INSTANCE_TYPE (parent, gtk_widget_get_type ()), 0.0F);
	point = *graphene_point_zero ();
	_tmp0_ = point;
	gtk_widget_compute_point (G_TYPE_CHECK_INSTANCE_CAST (self, gtk_widget_get_type (), GtkWidget), parent, &_tmp0_, &_tmp1_);
	dest_point = _tmp1_;
	_tmp2_ = dest_point;
	result = _tmp2_.y;
	return result;
}

GeeHashMap*
sway_notification_center_notification_group_get_notification_ids (SwayNotificationCenterNotificationGroup* self)
{
	GeeHashMap* result;
	GeeHashMap* _tmp0_;
	g_return_val_if_fail (SWAY_NOTIFICATION_CENTER_IS_NOTIFICATION_GROUP (self), NULL);
	_tmp0_ = self->priv->_notification_ids;
	result = _tmp0_;
	return result;
}

static void
sway_notification_center_notification_group_set_notification_ids (SwayNotificationCenterNotificationGroup* self,
                                                                  GeeHashMap* value)
{
	GeeHashMap* old_value;
	g_return_if_fail (SWAY_NOTIFICATION_CENTER_IS_NOTIFICATION_GROUP (self));
	old_value = sway_notification_center_notification_group_get_notification_ids (self);
	if (old_value != value) {
		GeeHashMap* _tmp0_;
		_tmp0_ = _g_object_ref0 (value);
		_g_object_unref0 (self->priv->_notification_ids);
		self->priv->_notification_ids = _tmp0_;
		g_object_notify_by_pspec ((GObject *) self, sway_notification_center_notification_group_properties[SWAY_NOTIFICATION_CENTER_NOTIFICATION_GROUP_NOTIFICATION_IDS_PROPERTY]);
	}
}

SwayNotificationCenterNotificationGroupState
sway_notification_center_notification_group_get_state (SwayNotificationCenterNotificationGroup* self)
{
	SwayNotificationCenterNotificationGroupState result;
	g_return_val_if_fail (SWAY_NOTIFICATION_CENTER_IS_NOTIFICATION_GROUP (self), 0);
	result = self->priv->_state;
	return result;
}

static void
sway_notification_center_notification_group_set_state (SwayNotificationCenterNotificationGroup* self,
                                                       SwayNotificationCenterNotificationGroupState value)
{
	SwayNotificationCenterNotificationGroupState old_value;
	g_return_if_fail (SWAY_NOTIFICATION_CENTER_IS_NOTIFICATION_GROUP (self));
	old_value = sway_notification_center_notification_group_get_state (self);
	if (old_value != value) {
		self->priv->_state = value;
		g_object_notify_by_pspec ((GObject *) self, sway_notification_center_notification_group_properties[SWAY_NOTIFICATION_CENTER_NOTIFICATION_GROUP_STATE_PROPERTY]);
	}
}

gboolean
sway_notification_center_notification_group_get_dismissed (SwayNotificationCenterNotificationGroup* self)
{
	gboolean result;
	g_return_val_if_fail (SWAY_NOTIFICATION_CENTER_IS_NOTIFICATION_GROUP (self), FALSE);
	result = self->priv->_dismissed;
	return result;
}

static void
sway_notification_center_notification_group_set_dismissed (SwayNotificationCenterNotificationGroup* self,
                                                           gboolean value)
{
	gboolean old_value;
	g_return_if_fail (SWAY_NOTIFICATION_CENTER_IS_NOTIFICATION_GROUP (self));
	old_value = sway_notification_center_notification_group_get_dismissed (self);
	if (old_value != value) {
		self->priv->_dismissed = value;
		g_object_notify_by_pspec ((GObject *) self, sway_notification_center_notification_group_properties[SWAY_NOTIFICATION_CENTER_NOTIFICATION_GROUP_DISMISSED_PROPERTY]);
	}
}

gboolean
sway_notification_center_notification_group_get_dismissed_by_swipe (SwayNotificationCenterNotificationGroup* self)
{
	gboolean result;
	g_return_val_if_fail (SWAY_NOTIFICATION_CENTER_IS_NOTIFICATION_GROUP (self), FALSE);
	result = self->priv->_dismissed_by_swipe;
	return result;
}

static void
sway_notification_center_notification_group_set_dismissed_by_swipe (SwayNotificationCenterNotificationGroup* self,
                                                                    gboolean value)
{
	gboolean old_value;
	g_return_if_fail (SWAY_NOTIFICATION_CENTER_IS_NOTIFICATION_GROUP (self));
	old_value = sway_notification_center_notification_group_get_dismissed_by_swipe (self);
	if (old_value != value) {
		self->priv->_dismissed_by_swipe = value;
		g_object_notify_by_pspec ((GObject *) self, sway_notification_center_notification_group_properties[SWAY_NOTIFICATION_CENTER_NOTIFICATION_GROUP_DISMISSED_BY_SWIPE_PROPERTY]);
	}
}

static void
sway_notification_center_notification_group_class_init (SwayNotificationCenterNotificationGroupClass * klass,
                                                        gpointer klass_data)
{
	sway_notification_center_notification_group_parent_class = g_type_class_peek_parent (klass);
	g_type_class_adjust_private_offset (klass, &SwayNotificationCenterNotificationGroup_private_offset);
	((GtkWidgetClass *) klass)->snapshot = (void (*) (GtkWidget*, GtkSnapshot*)) sway_notification_center_notification_group_real_snapshot;
	G_OBJECT_CLASS (klass)->get_property = _vala_sway_notification_center_notification_group_get_property;
	G_OBJECT_CLASS (klass)->set_property = _vala_sway_notification_center_notification_group_set_property;
	G_OBJECT_CLASS (klass)->finalize = sway_notification_center_notification_group_finalize;
	g_object_class_install_property (G_OBJECT_CLASS (klass), SWAY_NOTIFICATION_CENTER_NOTIFICATION_GROUP_NOTIFICATION_IDS_PROPERTY, sway_notification_center_notification_group_properties[SWAY_NOTIFICATION_CENTER_NOTIFICATION_GROUP_NOTIFICATION_IDS_PROPERTY] = g_param_spec_object ("notification-ids", "notification-ids", "notification-ids", GEE_TYPE_HASH_MAP, G_PARAM_STATIC_STRINGS | G_PARAM_READABLE));
	g_object_class_install_property (G_OBJECT_CLASS (klass), SWAY_NOTIFICATION_CENTER_NOTIFICATION_GROUP_STATE_PROPERTY, sway_notification_center_notification_group_properties[SWAY_NOTIFICATION_CENTER_NOTIFICATION_GROUP_STATE_PROPERTY] = g_param_spec_enum ("state", "state", "state", SWAY_NOTIFICATION_CENTER_TYPE_NOTIFICATION_GROUP_STATE, SWAY_NOTIFICATION_CENTER_NOTIFICATION_GROUP_STATE_EMPTY, G_PARAM_STATIC_STRINGS | G_PARAM_READABLE));
	g_object_class_install_property (G_OBJECT_CLASS (klass), SWAY_NOTIFICATION_CENTER_NOTIFICATION_GROUP_DISMISSED_PROPERTY, sway_notification_center_notification_group_properties[SWAY_NOTIFICATION_CENTER_NOTIFICATION_GROUP_DISMISSED_PROPERTY] = g_param_spec_boolean ("dismissed", "dismissed", "dismissed", FALSE, G_PARAM_STATIC_STRINGS | G_PARAM_READABLE));
	g_object_class_install_property (G_OBJECT_CLASS (klass), SWAY_NOTIFICATION_CENTER_NOTIFICATION_GROUP_DISMISSED_BY_SWIPE_PROPERTY, sway_notification_center_notification_group_properties[SWAY_NOTIFICATION_CENTER_NOTIFICATION_GROUP_DISMISSED_BY_SWIPE_PROPERTY] = g_param_spec_boolean ("dismissed-by-swipe", "dismissed-by-swipe", "dismissed-by-swipe", FALSE, G_PARAM_STATIC_STRINGS | G_PARAM_READABLE));
	sway_notification_center_notification_group_signals[SWAY_NOTIFICATION_CENTER_NOTIFICATION_GROUP_ON_EXPAND_CHANGE_SIGNAL] = g_signal_new ("on-expand-change", SWAY_NOTIFICATION_CENTER_TYPE_NOTIFICATION_GROUP, G_SIGNAL_RUN_LAST, 0, NULL, NULL, g_cclosure_marshal_VOID__BOOLEAN, G_TYPE_NONE, 1, G_TYPE_BOOLEAN);
}

static void
sway_notification_center_notification_group_instance_init (SwayNotificationCenterNotificationGroup * self,
                                                           gpointer klass)
{
	GeeHashMap* _tmp0_;
	GtkRevealer* _tmp1_;
	GeeHashSet* _tmp2_;
	self->priv = sway_notification_center_notification_group_get_instance_private (self);
	_tmp0_ = gee_hash_map_new (G_TYPE_UINT, NULL, NULL, SWAY_NOTIFICATION_CENTER_TYPE_NOTIFICATION, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL);
	if (_tmp0_) {
		g_object_set_data ((GObject *) _tmp0_, "vala-creation-function", "");
	}
	self->priv->_notification_ids = _tmp0_;
	self->priv->_state = SWAY_NOTIFICATION_CENTER_NOTIFICATION_GROUP_STATE_EMPTY;
	self->priv->_dismissed = FALSE;
	self->priv->_dismissed_by_swipe = FALSE;
	_tmp1_ = (GtkRevealer*) gtk_revealer_new ();
	if (_tmp1_) {
		g_object_set_data ((GObject *) _tmp1_, "vala-creation-function", "");
	}
	g_object_ref_sink (_tmp1_);
	self->priv->revealer = _tmp1_;
	self->priv->gesture_down = FALSE;
	self->priv->gesture_in = FALSE;
	_tmp2_ = gee_hash_set_new (G_TYPE_UINT, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL);
	if (_tmp2_) {
		g_object_set_data ((GObject *) _tmp2_, "vala-creation-function", "");
	}
	self->priv->urgent_notifications = _tmp2_;
	self->priv->remove_animation_done_id = (gulong) 0;
}

static void
sway_notification_center_notification_group_finalize (GObject * obj)
{
	SwayNotificationCenterNotificationGroup * self;
	self = G_TYPE_CHECK_INSTANCE_CAST (obj, SWAY_NOTIFICATION_CENTER_TYPE_NOTIFICATION_GROUP, SwayNotificationCenterNotificationGroup);
	_g_free0 (self->name_id);
	_g_object_unref0 (self->priv->_notification_ids);
	_g_object_unref0 (self->priv->close_button);
	_g_object_unref0 (self->priv->dismissible);
	_g_object_unref0 (self->priv->group);
	_g_object_unref0 (self->priv->revealer);
	_g_object_unref0 (self->priv->app_icon);
	_g_object_unref0 (self->priv->app_label);
	_g_object_unref0 (self->priv->motion_controller);
	_g_object_unref0 (self->priv->gesture);
	_g_object_unref0 (self->priv->urgent_notifications);
	_g_object_unref0 (self->priv->animation_target);
	_g_object_unref0 (self->priv->remove_animation);
	G_OBJECT_CLASS (sway_notification_center_notification_group_parent_class)->finalize (obj);
}

 G_GNUC_NO_INLINE static GType
sway_notification_center_notification_group_get_type_once (void)
{
	static const GTypeInfo g_define_type_info = { sizeof (SwayNotificationCenterNotificationGroupClass), (GBaseInitFunc) NULL, (GBaseFinalizeFunc) NULL, (GClassInitFunc) sway_notification_center_notification_group_class_init, (GClassFinalizeFunc) NULL, NULL, sizeof (SwayNotificationCenterNotificationGroup), 0, (GInstanceInitFunc) sway_notification_center_notification_group_instance_init, NULL };
	GType sway_notification_center_notification_group_type_id;
	sway_notification_center_notification_group_type_id = g_type_register_static (gtk_list_box_row_get_type (), "SwayNotificationCenterNotificationGroup", &g_define_type_info, 0);
	SwayNotificationCenterNotificationGroup_private_offset = g_type_add_instance_private (sway_notification_center_notification_group_type_id, sizeof (SwayNotificationCenterNotificationGroupPrivate));
	return sway_notification_center_notification_group_type_id;
}

GType
sway_notification_center_notification_group_get_type (void)
{
	static gsize sway_notification_center_notification_group_type_id__once = 0;
	if (g_once_init_enter (&sway_notification_center_notification_group_type_id__once)) {
		GType sway_notification_center_notification_group_type_id;
		sway_notification_center_notification_group_type_id = sway_notification_center_notification_group_get_type_once ();
		g_once_init_leave (&sway_notification_center_notification_group_type_id__once, sway_notification_center_notification_group_type_id);
	}
	return sway_notification_center_notification_group_type_id__once;
}

static void
_vala_sway_notification_center_notification_group_get_property (GObject * object,
                                                                guint property_id,
                                                                GValue * value,
                                                                GParamSpec * pspec)
{
	SwayNotificationCenterNotificationGroup * self;
	self = G_TYPE_CHECK_INSTANCE_CAST (object, SWAY_NOTIFICATION_CENTER_TYPE_NOTIFICATION_GROUP, SwayNotificationCenterNotificationGroup);
	switch (property_id) {
		case SWAY_NOTIFICATION_CENTER_NOTIFICATION_GROUP_NOTIFICATION_IDS_PROPERTY:
		g_value_set_object (value, sway_notification_center_notification_group_get_notification_ids (self));
		break;
		case SWAY_NOTIFICATION_CENTER_NOTIFICATION_GROUP_STATE_PROPERTY:
		g_value_set_enum (value, sway_notification_center_notification_group_get_state (self));
		break;
		case SWAY_NOTIFICATION_CENTER_NOTIFICATION_GROUP_DISMISSED_PROPERTY:
		g_value_set_boolean (value, sway_notification_center_notification_group_get_dismissed (self));
		break;
		case SWAY_NOTIFICATION_CENTER_NOTIFICATION_GROUP_DISMISSED_BY_SWIPE_PROPERTY:
		g_value_set_boolean (value, sway_notification_center_notification_group_get_dismissed_by_swipe (self));
		break;
		default:
		G_OBJECT_WARN_INVALID_PROPERTY_ID (object, property_id, pspec);
		break;
	}
}

static void
_vala_sway_notification_center_notification_group_set_property (GObject * object,
                                                                guint property_id,
                                                                const GValue * value,
                                                                GParamSpec * pspec)
{
	SwayNotificationCenterNotificationGroup * self;
	self = G_TYPE_CHECK_INSTANCE_CAST (object, SWAY_NOTIFICATION_CENTER_TYPE_NOTIFICATION_GROUP, SwayNotificationCenterNotificationGroup);
	switch (property_id) {
		case SWAY_NOTIFICATION_CENTER_NOTIFICATION_GROUP_NOTIFICATION_IDS_PROPERTY:
		sway_notification_center_notification_group_set_notification_ids (self, g_value_get_object (value));
		break;
		case SWAY_NOTIFICATION_CENTER_NOTIFICATION_GROUP_STATE_PROPERTY:
		sway_notification_center_notification_group_set_state (self, g_value_get_enum (value));
		break;
		case SWAY_NOTIFICATION_CENTER_NOTIFICATION_GROUP_DISMISSED_PROPERTY:
		sway_notification_center_notification_group_set_dismissed (self, g_value_get_boolean (value));
		break;
		case SWAY_NOTIFICATION_CENTER_NOTIFICATION_GROUP_DISMISSED_BY_SWIPE_PROPERTY:
		sway_notification_center_notification_group_set_dismissed_by_swipe (self, g_value_get_boolean (value));
		break;
		default:
		G_OBJECT_WARN_INVALID_PROPERTY_ID (object, property_id, pspec);
		break;
	}
}

