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

#include <gtk/gtk.h>
#include <glib-object.h>
#include <gee.h>
#include <stdlib.h>
#include <string.h>
#include <glib.h>
#include <float.h>
#include <math.h>
#include <adwaita.h>
#include "libdino.h"
#include "xmpp-vala.h"
#include "dino_i18n.h"
#include <gdk/gdk.h>
#include <cairo-gobject.h>

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

#define DINO_UI_TYPE_CALL_WINDOW (dino_ui_call_window_get_type ())
#define DINO_UI_CALL_WINDOW(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), DINO_UI_TYPE_CALL_WINDOW, DinoUiCallWindow))
#define DINO_UI_CALL_WINDOW_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), DINO_UI_TYPE_CALL_WINDOW, DinoUiCallWindowClass))
#define DINO_UI_IS_CALL_WINDOW(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), DINO_UI_TYPE_CALL_WINDOW))
#define DINO_UI_IS_CALL_WINDOW_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), DINO_UI_TYPE_CALL_WINDOW))
#define DINO_UI_CALL_WINDOW_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), DINO_UI_TYPE_CALL_WINDOW, DinoUiCallWindowClass))

typedef struct _DinoUiCallWindow DinoUiCallWindow;
typedef struct _DinoUiCallWindowClass DinoUiCallWindowClass;
typedef struct _DinoUiCallWindowPrivate DinoUiCallWindowPrivate;

#define DINO_UI_TYPE_CALL_WINDOW_CONTROLLER (dino_ui_call_window_controller_get_type ())
#define DINO_UI_CALL_WINDOW_CONTROLLER(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), DINO_UI_TYPE_CALL_WINDOW_CONTROLLER, DinoUiCallWindowController))
#define DINO_UI_CALL_WINDOW_CONTROLLER_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), DINO_UI_TYPE_CALL_WINDOW_CONTROLLER, DinoUiCallWindowControllerClass))
#define DINO_UI_IS_CALL_WINDOW_CONTROLLER(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), DINO_UI_TYPE_CALL_WINDOW_CONTROLLER))
#define DINO_UI_IS_CALL_WINDOW_CONTROLLER_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), DINO_UI_TYPE_CALL_WINDOW_CONTROLLER))
#define DINO_UI_CALL_WINDOW_CONTROLLER_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), DINO_UI_TYPE_CALL_WINDOW_CONTROLLER, DinoUiCallWindowControllerClass))

typedef struct _DinoUiCallWindowController DinoUiCallWindowController;
typedef struct _DinoUiCallWindowControllerClass DinoUiCallWindowControllerClass;

#define DINO_UI_TYPE_CALL_BOTTOM_BAR (dino_ui_call_bottom_bar_get_type ())
#define DINO_UI_CALL_BOTTOM_BAR(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), DINO_UI_TYPE_CALL_BOTTOM_BAR, DinoUiCallBottomBar))
#define DINO_UI_CALL_BOTTOM_BAR_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), DINO_UI_TYPE_CALL_BOTTOM_BAR, DinoUiCallBottomBarClass))
#define DINO_UI_IS_CALL_BOTTOM_BAR(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), DINO_UI_TYPE_CALL_BOTTOM_BAR))
#define DINO_UI_IS_CALL_BOTTOM_BAR_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), DINO_UI_TYPE_CALL_BOTTOM_BAR))
#define DINO_UI_CALL_BOTTOM_BAR_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), DINO_UI_TYPE_CALL_BOTTOM_BAR, DinoUiCallBottomBarClass))

typedef struct _DinoUiCallBottomBar DinoUiCallBottomBar;
typedef struct _DinoUiCallBottomBarClass DinoUiCallBottomBarClass;

#define DINO_UI_TYPE_PARTICIPANT_WIDGET (dino_ui_participant_widget_get_type ())
#define DINO_UI_PARTICIPANT_WIDGET(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), DINO_UI_TYPE_PARTICIPANT_WIDGET, DinoUiParticipantWidget))
#define DINO_UI_PARTICIPANT_WIDGET_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), DINO_UI_TYPE_PARTICIPANT_WIDGET, DinoUiParticipantWidgetClass))
#define DINO_UI_IS_PARTICIPANT_WIDGET(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), DINO_UI_TYPE_PARTICIPANT_WIDGET))
#define DINO_UI_IS_PARTICIPANT_WIDGET_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), DINO_UI_TYPE_PARTICIPANT_WIDGET))
#define DINO_UI_PARTICIPANT_WIDGET_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), DINO_UI_TYPE_PARTICIPANT_WIDGET, DinoUiParticipantWidgetClass))

typedef struct _DinoUiParticipantWidget DinoUiParticipantWidget;
typedef struct _DinoUiParticipantWidgetClass DinoUiParticipantWidgetClass;
enum  {
	DINO_UI_CALL_WINDOW_0_PROPERTY,
	DINO_UI_CALL_WINDOW_CONTROLS_ACTIVE_PROPERTY,
	DINO_UI_CALL_WINDOW_NUM_PROPERTIES
};
static GParamSpec* dino_ui_call_window_properties[DINO_UI_CALL_WINDOW_NUM_PROPERTIES];
#define _g_object_unref0(var) ((var == NULL) ? NULL : (var = (g_object_unref (var), NULL)))

#define DINO_UI_TYPE_OUTSIDE_HEADER_BAR (dino_ui_outside_header_bar_get_type ())
#define DINO_UI_OUTSIDE_HEADER_BAR(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), DINO_UI_TYPE_OUTSIDE_HEADER_BAR, DinoUiOutsideHeaderBar))
#define DINO_UI_OUTSIDE_HEADER_BAR_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), DINO_UI_TYPE_OUTSIDE_HEADER_BAR, DinoUiOutsideHeaderBarClass))
#define DINO_UI_IS_OUTSIDE_HEADER_BAR(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), DINO_UI_TYPE_OUTSIDE_HEADER_BAR))
#define DINO_UI_IS_OUTSIDE_HEADER_BAR_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), DINO_UI_TYPE_OUTSIDE_HEADER_BAR))
#define DINO_UI_OUTSIDE_HEADER_BAR_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), DINO_UI_TYPE_OUTSIDE_HEADER_BAR, DinoUiOutsideHeaderBarClass))

typedef struct _DinoUiOutsideHeaderBar DinoUiOutsideHeaderBar;
typedef struct _DinoUiOutsideHeaderBarClass DinoUiOutsideHeaderBarClass;
typedef struct _DinoUiParticipantWidgetPrivate DinoUiParticipantWidgetPrivate;

#define DINO_UI_TYPE_CALL_ENCRYPTION_BUTTON_CONTROLLER (dino_ui_call_encryption_button_controller_get_type ())
#define DINO_UI_CALL_ENCRYPTION_BUTTON_CONTROLLER(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), DINO_UI_TYPE_CALL_ENCRYPTION_BUTTON_CONTROLLER, DinoUiCallEncryptionButtonController))
#define DINO_UI_CALL_ENCRYPTION_BUTTON_CONTROLLER_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), DINO_UI_TYPE_CALL_ENCRYPTION_BUTTON_CONTROLLER, DinoUiCallEncryptionButtonControllerClass))
#define DINO_UI_IS_CALL_ENCRYPTION_BUTTON_CONTROLLER(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), DINO_UI_TYPE_CALL_ENCRYPTION_BUTTON_CONTROLLER))
#define DINO_UI_IS_CALL_ENCRYPTION_BUTTON_CONTROLLER_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), DINO_UI_TYPE_CALL_ENCRYPTION_BUTTON_CONTROLLER))
#define DINO_UI_CALL_ENCRYPTION_BUTTON_CONTROLLER_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), DINO_UI_TYPE_CALL_ENCRYPTION_BUTTON_CONTROLLER, DinoUiCallEncryptionButtonControllerClass))

typedef struct _DinoUiCallEncryptionButtonController DinoUiCallEncryptionButtonController;
typedef struct _DinoUiCallEncryptionButtonControllerClass DinoUiCallEncryptionButtonControllerClass;
#define _g_free0(var) (var = (g_free (var), NULL))
enum  {
	DINO_UI_CALL_WINDOW_MENU_DUMP_DOT_SIGNAL,
	DINO_UI_CALL_WINDOW_NUM_SIGNALS
};
static guint dino_ui_call_window_signals[DINO_UI_CALL_WINDOW_NUM_SIGNALS] = {0};
typedef struct _DinoUiOutsideHeaderBarPrivate DinoUiOutsideHeaderBarPrivate;
enum  {
	DINO_UI_OUTSIDE_HEADER_BAR_0_PROPERTY,
	DINO_UI_OUTSIDE_HEADER_BAR_NUM_PROPERTIES
};
static GParamSpec* dino_ui_outside_header_bar_properties[DINO_UI_OUTSIDE_HEADER_BAR_NUM_PROPERTIES];

struct _DinoUiCallWindow {
	GtkWindow parent_instance;
	DinoUiCallWindowPrivate * priv;
	DinoUiCallWindowController* controller;
	GtkOverlay* overlay;
	GtkGrid* grid;
	DinoUiCallBottomBar* bottom_bar;
	GtkRevealer* bottom_bar_revealer;
	GtkHeaderBar* header_bar;
	GtkRevealer* header_bar_revealer;
	GtkBox* own_video_box;
};

struct _DinoUiCallWindowClass {
	GtkWindowClass parent_class;
};

struct _DinoUiCallWindowPrivate {
	GeeHashMap* participant_widgets;
	GeeArrayList* participants;
	GtkEventControllerFocus* this_focus_events;
	GtkGestureClick* this_gesture_events;
	GtkEventControllerMotion* this_motion_events;
	gdouble latest_motion_x;
	gdouble latest_motion_y;
	gint own_video_width;
	gint own_video_height;
	gboolean hide_control_elements;
	guint hide_control_handler;
	gboolean _controls_active;
};

struct _DinoUiParticipantWidget {
	GtkBox parent_instance;
	DinoUiParticipantWidgetPrivate * priv;
	GtkOverlay* overlay;
	GtkWidget* main_widget;
	GtkHeaderBar* header_bar;
	GtkLabel* title_label;
	GtkLabel* subtitle_label;
	GtkBox* inner_box;
	GtkBox* title_box;
	GtkMenuButton* encryption_button;
	DinoUiCallEncryptionButtonController* encryption_button_controller;
	GtkMenuButton* menu_button;
	GtkButton* invite_button;
	gboolean shows_video;
	gchar* participant_name;
};

struct _DinoUiParticipantWidgetClass {
	GtkBoxClass parent_class;
};

struct _DinoUiOutsideHeaderBar {
	GtkBox parent_instance;
	DinoUiOutsideHeaderBarPrivate * priv;
};

struct _DinoUiOutsideHeaderBarClass {
	GtkBoxClass parent_class;
};

struct _DinoUiOutsideHeaderBarPrivate {
	GtkHeaderBar* header_bar;
};

static gint DinoUiCallWindow_private_offset;
static gpointer dino_ui_call_window_parent_class = NULL;
static gint DinoUiOutsideHeaderBar_private_offset;
static gpointer dino_ui_outside_header_bar_parent_class = NULL;

VALA_EXTERN GType dino_ui_call_window_get_type (void) G_GNUC_CONST ;
G_DEFINE_AUTOPTR_CLEANUP_FUNC (DinoUiCallWindow, g_object_unref)
VALA_EXTERN GType dino_ui_call_window_controller_get_type (void) G_GNUC_CONST ;
G_DEFINE_AUTOPTR_CLEANUP_FUNC (DinoUiCallWindowController, g_object_unref)
VALA_EXTERN GType dino_ui_call_bottom_bar_get_type (void) G_GNUC_CONST ;
G_DEFINE_AUTOPTR_CLEANUP_FUNC (DinoUiCallBottomBar, g_object_unref)
VALA_EXTERN GType dino_ui_participant_widget_get_type (void) G_GNUC_CONST ;
G_DEFINE_AUTOPTR_CLEANUP_FUNC (DinoUiParticipantWidget, g_object_unref)
VALA_EXTERN DinoUiCallBottomBar* dino_ui_call_bottom_bar_new (void);
VALA_EXTERN DinoUiCallBottomBar* dino_ui_call_bottom_bar_construct (GType object_type);
VALA_EXTERN DinoUiCallWindow* dino_ui_call_window_new (void);
VALA_EXTERN DinoUiCallWindow* dino_ui_call_window_construct (GType object_type);
static void __lambda113_ (DinoUiCallWindow* self,
                   gdouble x,
                   gdouble y);
static void dino_ui_call_window_reveal_control_elements (DinoUiCallWindow* self);
static void ___lambda113__gtk_event_controller_motion_motion (GtkEventControllerMotion* _sender,
                                                       gdouble x,
                                                       gdouble y,
                                                       gpointer self);
static void _dino_ui_call_window_reveal_control_elements_gtk_event_controller_focus_enter (GtkEventControllerFocus* _sender,
                                                                                    gpointer self);
static void _dino_ui_call_window_reveal_control_elements_gtk_event_controller_focus_leave (GtkEventControllerFocus* _sender,
                                                                                    gpointer self);
static void _dino_ui_call_window_reveal_control_elements_gtk_gesture_click_pressed (GtkGestureClick* _sender,
                                                                             gint n_press,
                                                                             gdouble x,
                                                                             gdouble y,
                                                                             gpointer self);
static void _dino_ui_call_window_reveal_control_elements_g_object_notify (GObject* _sender,
                                                                   GParamSpec* pspec,
                                                                   gpointer self);
static void dino_ui_call_window_reposition_participant_widgets (DinoUiCallWindow* self);
static void _dino_ui_call_window_reposition_participant_widgets_g_object_notify (GObject* _sender,
                                                                          GParamSpec* pspec,
                                                                          gpointer self);
VALA_EXTERN DinoUiOutsideHeaderBar* dino_ui_outside_header_bar_new (GtkHeaderBar* header_bar);
VALA_EXTERN DinoUiOutsideHeaderBar* dino_ui_outside_header_bar_construct (GType object_type,
                                                              GtkHeaderBar* header_bar);
VALA_EXTERN GType dino_ui_outside_header_bar_get_type (void) G_GNUC_CONST ;
G_DEFINE_AUTOPTR_CLEANUP_FUNC (DinoUiOutsideHeaderBar, g_object_unref)
VALA_EXTERN void dino_ui_call_window_add_participant (DinoUiCallWindow* self,
                                          const gchar* participant,
                                          DinoUiParticipantWidget* participant_widget);
VALA_EXTERN GType dino_ui_call_encryption_button_controller_get_type (void) G_GNUC_CONST ;
G_DEFINE_AUTOPTR_CLEANUP_FUNC (DinoUiCallEncryptionButtonController, g_object_unref)
VALA_EXTERN void dino_ui_call_window_remove_participant (DinoUiCallWindow* self,
                                             const gchar* participant);
VALA_EXTERN void dino_ui_participant_widget_set_video (DinoUiParticipantWidget* self,
                                           GtkWidget* widget);
VALA_EXTERN void dino_ui_call_window_set_video (DinoUiCallWindow* self,
                                    const gchar* participant,
                                    GtkWidget* widget);
static void dino_ui_call_window_timeout_hide_control_elements (DinoUiCallWindow* self);
VALA_EXTERN void dino_ui_call_window_set_placeholder (DinoUiCallWindow* self,
                                          const gchar* participant,
                                          DinoEntitiesConversation* conversation,
                                          DinoStreamInteractor* stream_interactor);
VALA_EXTERN void dino_ui_participant_widget_set_placeholder (DinoUiParticipantWidget* self,
                                                 DinoEntitiesConversation* conversation,
                                                 DinoStreamInteractor* stream_interactor);
static void dino_ui_call_window_reposition_participant_widgets_rec (DinoUiCallWindow* self,
                                                             GeeArrayList* participants,
                                                             gint width,
                                                             gint height,
                                                             gint margin_top,
                                                             gint margin_right,
                                                             gint margin_bottom,
                                                             gint margin_left);
VALA_EXTERN void dino_ui_participant_widget_on_row_changed (DinoUiParticipantWidget* self,
                                                gboolean is_highest,
                                                gboolean is_lowest,
                                                gboolean is_start,
                                                gboolean is_end);
VALA_EXTERN void dino_ui_call_window_set_own_video (DinoUiCallWindow* self,
                                        GtkWidget* widget_);
VALA_EXTERN void dino_ui_call_window_unset_own_video (DinoUiCallWindow* self);
VALA_EXTERN void dino_ui_call_window_set_own_video_ratio (DinoUiCallWindow* self,
                                              gint width,
                                              gint height);
VALA_EXTERN void dino_ui_call_window_set_status (DinoUiCallWindow* self,
                                     const gchar* participant_id,
                                     const gchar* state);
VALA_EXTERN void dino_ui_participant_widget_set_status (DinoUiParticipantWidget* self,
                                            const gchar* state);
VALA_EXTERN void dino_ui_call_window_show_counterpart_ended (DinoUiCallWindow* self,
                                                 const gchar* who_terminated,
                                                 const gchar* reason_name,
                                                 const gchar* reason_text);
VALA_EXTERN void dino_ui_call_bottom_bar_show_counterpart_ended (DinoUiCallBottomBar* self,
                                                     const gchar* text);
VALA_EXTERN void dino_ui_call_window_set_controls_active (DinoUiCallWindow* self,
                                              gboolean value);
static gboolean __lambda65_ (DinoUiCallWindow* self);
VALA_EXTERN gboolean dino_ui_call_bottom_bar_is_menu_active (DinoUiCallBottomBar* self);
static gboolean ___lambda65__gsource_func (gpointer self);
static gboolean dino_ui_call_window_on_get_child_position (DinoUiCallWindow* self,
                                                    GtkWidget* widget,
                                                    GdkRectangle* allocation);
VALA_EXTERN gboolean dino_ui_call_window_get_controls_active (DinoUiCallWindow* self);
static GObject * dino_ui_call_window_constructor (GType type,
                                           guint n_construct_properties,
                                           GObjectConstructParam * construct_properties);
static gboolean _dino_ui_call_window_on_get_child_position_gtk_overlay_get_child_position (GtkOverlay* _sender,
                                                                                    GtkWidget* widget,
                                                                                    GdkRectangle* allocation,
                                                                                    gpointer self);
static void dino_ui_call_window_finalize (GObject * obj);
static GType dino_ui_call_window_get_type_once (void);
static void _vala_dino_ui_call_window_get_property (GObject * object,
                                             guint property_id,
                                             GValue * value,
                                             GParamSpec * pspec);
static void _vala_dino_ui_call_window_set_property (GObject * object,
                                             guint property_id,
                                             const GValue * value,
                                             GParamSpec * pspec);
VALA_EXTERN void dino_ui_outside_header_bar_on_header_bar_size_allocate (DinoUiOutsideHeaderBar* self);
static void dino_ui_outside_header_bar_finalize (GObject * obj);
static GType dino_ui_outside_header_bar_get_type_once (void);

static inline gpointer
dino_ui_call_window_get_instance_private (DinoUiCallWindow* self)
{
	return G_STRUCT_MEMBER_P (self, DinoUiCallWindow_private_offset);
}

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

static void
__lambda113_ (DinoUiCallWindow* self,
              gdouble x,
              gdouble y)
{
	gboolean _tmp0_ = FALSE;
	if (fabs (self->priv->latest_motion_x - x) <= DINO_UI_CALL_WINDOW_MOTION_RELEVANCE_THRESHOLD) {
		_tmp0_ = fabs (self->priv->latest_motion_y - y) <= DINO_UI_CALL_WINDOW_MOTION_RELEVANCE_THRESHOLD;
	} else {
		_tmp0_ = FALSE;
	}
	if (_tmp0_) {
		return;
	}
	self->priv->latest_motion_x = x;
	self->priv->latest_motion_y = y;
	dino_ui_call_window_reveal_control_elements (self);
}

static void
___lambda113__gtk_event_controller_motion_motion (GtkEventControllerMotion* _sender,
                                                  gdouble x,
                                                  gdouble y,
                                                  gpointer self)
{
	__lambda113_ ((DinoUiCallWindow*) self, x, y);
}

static void
_dino_ui_call_window_reveal_control_elements_gtk_event_controller_focus_enter (GtkEventControllerFocus* _sender,
                                                                               gpointer self)
{
	dino_ui_call_window_reveal_control_elements ((DinoUiCallWindow*) self);
}

static void
_dino_ui_call_window_reveal_control_elements_gtk_event_controller_focus_leave (GtkEventControllerFocus* _sender,
                                                                               gpointer self)
{
	dino_ui_call_window_reveal_control_elements ((DinoUiCallWindow*) self);
}

static void
_dino_ui_call_window_reveal_control_elements_gtk_gesture_click_pressed (GtkGestureClick* _sender,
                                                                        gint n_press,
                                                                        gdouble x,
                                                                        gdouble y,
                                                                        gpointer self)
{
	dino_ui_call_window_reveal_control_elements ((DinoUiCallWindow*) self);
}

static void
_dino_ui_call_window_reveal_control_elements_g_object_notify (GObject* _sender,
                                                              GParamSpec* pspec,
                                                              gpointer self)
{
	dino_ui_call_window_reveal_control_elements ((DinoUiCallWindow*) self);
}

static void
_dino_ui_call_window_reposition_participant_widgets_g_object_notify (GObject* _sender,
                                                                     GParamSpec* pspec,
                                                                     gpointer self)
{
	dino_ui_call_window_reposition_participant_widgets ((DinoUiCallWindow*) self);
}

DinoUiCallWindow*
dino_ui_call_window_construct (GType object_type)
{
	DinoUiCallWindow * self = NULL;
	GtkRevealer* _tmp0_;
	GtkEventControllerMotion* _tmp1_;
	GtkEventController* _tmp2_;
	GtkEventControllerMotion* _tmp3_;
	GtkEventControllerFocus* _tmp4_;
	GtkEventController* _tmp5_;
	GtkEventControllerFocus* _tmp6_;
	GtkEventControllerFocus* _tmp7_;
	GtkGestureClick* _tmp8_;
	GtkEventController* _tmp9_;
	GtkGestureClick* _tmp10_;
	GtkHeaderBar* _tmp11_;
	DinoUiOutsideHeaderBar* _tmp12_;
	DinoUiOutsideHeaderBar* _tmp13_;
	self = (DinoUiCallWindow*) g_object_new (object_type, NULL);
	_tmp0_ = self->bottom_bar_revealer;
	g_object_bind_property_with_closures ((GObject*) self, "controls-active", (GObject*) _tmp0_, "reveal-child", G_BINDING_SYNC_CREATE, (GClosure*) ((NULL == NULL) ? NULL : g_cclosure_new ((GCallback) NULL, NULL, (GClosureNotify) NULL)), (GClosure*) ((NULL == NULL) ? NULL : g_cclosure_new ((GCallback) NULL, NULL, (GClosureNotify) NULL)));
	_tmp1_ = self->priv->this_motion_events;
	_tmp2_ = _g_object_ref0 ((GtkEventController*) _tmp1_);
	gtk_widget_add_controller (G_TYPE_CHECK_INSTANCE_CAST (self, gtk_widget_get_type (), GtkWidget), _tmp2_);
	_tmp3_ = self->priv->this_motion_events;
	g_signal_connect_object (_tmp3_, "motion", (GCallback) ___lambda113__gtk_event_controller_motion_motion, self, 0);
	_tmp4_ = self->priv->this_focus_events;
	_tmp5_ = _g_object_ref0 ((GtkEventController*) _tmp4_);
	gtk_widget_add_controller (G_TYPE_CHECK_INSTANCE_CAST (self, gtk_widget_get_type (), GtkWidget), _tmp5_);
	_tmp6_ = self->priv->this_focus_events;
	g_signal_connect_object (_tmp6_, "enter", (GCallback) _dino_ui_call_window_reveal_control_elements_gtk_event_controller_focus_enter, self, 0);
	_tmp7_ = self->priv->this_focus_events;
	g_signal_connect_object (_tmp7_, "leave", (GCallback) _dino_ui_call_window_reveal_control_elements_gtk_event_controller_focus_leave, self, 0);
	_tmp8_ = self->priv->this_gesture_events;
	_tmp9_ = _g_object_ref0 ((GtkEventController*) _tmp8_);
	gtk_widget_add_controller (G_TYPE_CHECK_INSTANCE_CAST (self, gtk_widget_get_type (), GtkWidget), _tmp9_);
	_tmp10_ = self->priv->this_gesture_events;
	g_signal_connect_object (_tmp10_, "pressed", (GCallback) _dino_ui_call_window_reveal_control_elements_gtk_gesture_click_pressed, self, G_CONNECT_AFTER);
	g_signal_connect_object ((GObject*) self, "notify::default-width", (GCallback) _dino_ui_call_window_reveal_control_elements_g_object_notify, self, 0);
	g_signal_connect_object ((GObject*) self, "notify::default-height", (GCallback) _dino_ui_call_window_reveal_control_elements_g_object_notify, self, 0);
	g_signal_connect_object ((GObject*) self, "notify::default-width", (GCallback) _dino_ui_call_window_reposition_participant_widgets_g_object_notify, self, 0);
	g_signal_connect_object ((GObject*) self, "notify::default-height", (GCallback) _dino_ui_call_window_reposition_participant_widgets_g_object_notify, self, 0);
	_tmp11_ = self->header_bar;
	_tmp12_ = dino_ui_outside_header_bar_new (_tmp11_);
	g_object_ref_sink (_tmp12_);
	_tmp13_ = _tmp12_;
	gtk_window_set_titlebar ((GtkWindow*) self, (GtkWidget*) _tmp13_);
	_g_object_unref0 (_tmp13_);
	dino_ui_call_window_reveal_control_elements (self);
	return self;
}

DinoUiCallWindow*
dino_ui_call_window_new (void)
{
	return dino_ui_call_window_construct (DINO_UI_TYPE_CALL_WINDOW);
}

void
dino_ui_call_window_add_participant (DinoUiCallWindow* self,
                                     const gchar* participant,
                                     DinoUiParticipantWidget* participant_widget)
{
	DinoUiCallEncryptionButtonController* _tmp0_;
	GeeArrayList* _tmp1_;
	GeeHashMap* _tmp2_;
	GtkGrid* _tmp3_;
	g_return_if_fail (self != NULL);
	g_return_if_fail (participant != NULL);
	g_return_if_fail (participant_widget != NULL);
	gtk_widget_set_visible ((GtkWidget*) participant_widget, TRUE);
	g_object_bind_property_with_closures ((GObject*) self, "controls-active", (GObject*) participant_widget, "controls-active", G_BINDING_SYNC_CREATE, (GClosure*) ((NULL == NULL) ? NULL : g_cclosure_new ((GCallback) NULL, NULL, (GClosureNotify) NULL)), (GClosure*) ((NULL == NULL) ? NULL : g_cclosure_new ((GCallback) NULL, NULL, (GClosureNotify) NULL)));
	_tmp0_ = participant_widget->encryption_button_controller;
	g_object_bind_property_with_closures ((GObject*) self, "controls-active", (GObject*) _tmp0_, "controls-active", G_BINDING_SYNC_CREATE, (GClosure*) ((NULL == NULL) ? NULL : g_cclosure_new ((GCallback) NULL, NULL, (GClosureNotify) NULL)), (GClosure*) ((NULL == NULL) ? NULL : g_cclosure_new ((GCallback) NULL, NULL, (GClosureNotify) NULL)));
	_tmp1_ = self->priv->participants;
	gee_abstract_collection_add ((GeeAbstractCollection*) _tmp1_, participant);
	_tmp2_ = self->priv->participant_widgets;
	gee_abstract_map_set ((GeeAbstractMap*) _tmp2_, participant, participant_widget);
	_tmp3_ = self->grid;
	gtk_grid_attach (_tmp3_, (GtkWidget*) participant_widget, 0, 0, 1, 1);
	dino_ui_call_window_reposition_participant_widgets (self);
}

void
dino_ui_call_window_remove_participant (DinoUiCallWindow* self,
                                        const gchar* participant)
{
	GeeHashMap* _tmp0_;
	gpointer _tmp1_;
	DinoUiParticipantWidget* _tmp2_;
	AdwBin* _tmp3_;
	AdwBin* _tmp4_;
	GeeArrayList* _tmp5_;
	GtkGrid* _tmp6_;
	GeeHashMap* _tmp7_;
	gpointer _tmp8_;
	DinoUiParticipantWidget* _tmp9_;
	GeeHashMap* _tmp10_;
	g_return_if_fail (self != NULL);
	g_return_if_fail (participant != NULL);
	_tmp0_ = self->priv->participant_widgets;
	_tmp1_ = gee_abstract_map_get ((GeeAbstractMap*) _tmp0_, participant);
	_tmp2_ = (DinoUiParticipantWidget*) _tmp1_;
	_tmp3_ = (AdwBin*) adw_bin_new ();
	g_object_ref_sink (_tmp3_);
	_tmp4_ = _tmp3_;
	dino_ui_participant_widget_set_video (_tmp2_, (GtkWidget*) _tmp4_);
	_g_object_unref0 (_tmp4_);
	_g_object_unref0 (_tmp2_);
	_tmp5_ = self->priv->participants;
	gee_abstract_collection_remove ((GeeAbstractCollection*) _tmp5_, participant);
	_tmp6_ = self->grid;
	_tmp7_ = self->priv->participant_widgets;
	_tmp8_ = gee_abstract_map_get ((GeeAbstractMap*) _tmp7_, participant);
	_tmp9_ = (DinoUiParticipantWidget*) _tmp8_;
	gtk_grid_remove (_tmp6_, (GtkWidget*) _tmp9_);
	_g_object_unref0 (_tmp9_);
	_tmp10_ = self->priv->participant_widgets;
	gee_abstract_map_unset ((GeeAbstractMap*) _tmp10_, participant, NULL);
	dino_ui_call_window_reposition_participant_widgets (self);
}

void
dino_ui_call_window_set_video (DinoUiCallWindow* self,
                               const gchar* participant,
                               GtkWidget* widget)
{
	GeeHashMap* _tmp0_;
	gpointer _tmp1_;
	DinoUiParticipantWidget* _tmp2_;
	g_return_if_fail (self != NULL);
	g_return_if_fail (participant != NULL);
	g_return_if_fail (widget != NULL);
	_tmp0_ = self->priv->participant_widgets;
	_tmp1_ = gee_abstract_map_get ((GeeAbstractMap*) _tmp0_, participant);
	_tmp2_ = (DinoUiParticipantWidget*) _tmp1_;
	dino_ui_participant_widget_set_video (_tmp2_, widget);
	_g_object_unref0 (_tmp2_);
	self->priv->hide_control_elements = TRUE;
	dino_ui_call_window_timeout_hide_control_elements (self);
}

void
dino_ui_call_window_set_placeholder (DinoUiCallWindow* self,
                                     const gchar* participant,
                                     DinoEntitiesConversation* conversation,
                                     DinoStreamInteractor* stream_interactor)
{
	GeeHashMap* _tmp0_;
	gpointer _tmp1_;
	DinoUiParticipantWidget* _tmp2_;
	g_return_if_fail (self != NULL);
	g_return_if_fail (participant != NULL);
	g_return_if_fail (stream_interactor != NULL);
	_tmp0_ = self->priv->participant_widgets;
	_tmp1_ = gee_abstract_map_get ((GeeAbstractMap*) _tmp0_, participant);
	_tmp2_ = (DinoUiParticipantWidget*) _tmp1_;
	dino_ui_participant_widget_set_placeholder (_tmp2_, conversation, stream_interactor);
	_g_object_unref0 (_tmp2_);
	self->priv->hide_control_elements = FALSE;
	{
		GeeIterator* _participant_widget_it = NULL;
		GeeHashMap* _tmp3_;
		GeeCollection* _tmp4_;
		GeeCollection* _tmp5_;
		GeeCollection* _tmp6_;
		GeeIterator* _tmp7_;
		GeeIterator* _tmp8_;
		_tmp3_ = self->priv->participant_widgets;
		_tmp4_ = gee_abstract_map_get_values ((GeeAbstractMap*) _tmp3_);
		_tmp5_ = _tmp4_;
		_tmp6_ = _tmp5_;
		_tmp7_ = gee_iterable_iterator ((GeeIterable*) _tmp6_);
		_tmp8_ = _tmp7_;
		_g_object_unref0 (_tmp6_);
		_participant_widget_it = _tmp8_;
		while (TRUE) {
			GeeIterator* _tmp9_;
			DinoUiParticipantWidget* participant_widget = NULL;
			GeeIterator* _tmp10_;
			gpointer _tmp11_;
			DinoUiParticipantWidget* _tmp12_;
			_tmp9_ = _participant_widget_it;
			if (!gee_iterator_next (_tmp9_)) {
				break;
			}
			_tmp10_ = _participant_widget_it;
			_tmp11_ = gee_iterator_get (_tmp10_);
			participant_widget = (DinoUiParticipantWidget*) _tmp11_;
			_tmp12_ = participant_widget;
			if (_tmp12_->shows_video) {
				self->priv->hide_control_elements = TRUE;
			}
			_g_object_unref0 (participant_widget);
		}
		_g_object_unref0 (_participant_widget_it);
	}
	if (!self->priv->hide_control_elements) {
		dino_ui_call_window_reveal_control_elements (self);
	}
}

static void
dino_ui_call_window_reposition_participant_widgets (DinoUiCallWindow* self)
{
	gint width = 0;
	gint height = 0;
	GeeArrayList* _tmp0_;
	g_return_if_fail (self != NULL);
	width = gtk_widget_get_size ((GtkWidget*) self, GTK_ORIENTATION_HORIZONTAL);
	height = gtk_widget_get_size ((GtkWidget*) self, GTK_ORIENTATION_VERTICAL);
	_tmp0_ = self->priv->participants;
	dino_ui_call_window_reposition_participant_widgets_rec (self, _tmp0_, width, height, 0, 0, 0, 0);
}

static void
dino_ui_call_window_reposition_participant_widgets_rec (DinoUiCallWindow* self,
                                                        GeeArrayList* participants,
                                                        gint width,
                                                        gint height,
                                                        gint margin_top,
                                                        gint margin_right,
                                                        gint margin_bottom,
                                                        gint margin_left)
{
	gint _tmp0_;
	gint _tmp1_;
	gint _tmp2_;
	gint _tmp3_;
	GeeArrayList* first_part = NULL;
	GeeArrayList* _tmp29_;
	GeeArrayList* last_part = NULL;
	GeeArrayList* _tmp30_;
	g_return_if_fail (self != NULL);
	g_return_if_fail (participants != NULL);
	_tmp0_ = gee_abstract_collection_get_size ((GeeAbstractCollection*) participants);
	_tmp1_ = _tmp0_;
	if (_tmp1_ == 0) {
		return;
	}
	_tmp2_ = gee_abstract_collection_get_size ((GeeAbstractCollection*) participants);
	_tmp3_ = _tmp2_;
	if (_tmp3_ == 1) {
		GeeHashMap* _tmp4_;
		gpointer _tmp5_;
		gchar* _tmp6_;
		gpointer _tmp7_;
		DinoUiParticipantWidget* _tmp8_;
		GeeHashMap* _tmp9_;
		gpointer _tmp10_;
		gchar* _tmp11_;
		gpointer _tmp12_;
		DinoUiParticipantWidget* _tmp13_;
		GeeHashMap* _tmp14_;
		gpointer _tmp15_;
		gchar* _tmp16_;
		gpointer _tmp17_;
		DinoUiParticipantWidget* _tmp18_;
		GeeHashMap* _tmp19_;
		gpointer _tmp20_;
		gchar* _tmp21_;
		gpointer _tmp22_;
		DinoUiParticipantWidget* _tmp23_;
		GeeHashMap* _tmp24_;
		gpointer _tmp25_;
		gchar* _tmp26_;
		gpointer _tmp27_;
		DinoUiParticipantWidget* _tmp28_;
		_tmp4_ = self->priv->participant_widgets;
		_tmp5_ = gee_abstract_list_get ((GeeAbstractList*) participants, 0);
		_tmp6_ = (gchar*) _tmp5_;
		_tmp7_ = gee_abstract_map_get ((GeeAbstractMap*) _tmp4_, _tmp6_);
		_tmp8_ = (DinoUiParticipantWidget*) _tmp7_;
		gtk_widget_set_margin_top ((GtkWidget*) _tmp8_, margin_top);
		_g_object_unref0 (_tmp8_);
		_g_free0 (_tmp6_);
		_tmp9_ = self->priv->participant_widgets;
		_tmp10_ = gee_abstract_list_get ((GeeAbstractList*) participants, 0);
		_tmp11_ = (gchar*) _tmp10_;
		_tmp12_ = gee_abstract_map_get ((GeeAbstractMap*) _tmp9_, _tmp11_);
		_tmp13_ = (DinoUiParticipantWidget*) _tmp12_;
		gtk_widget_set_margin_end ((GtkWidget*) _tmp13_, margin_right);
		_g_object_unref0 (_tmp13_);
		_g_free0 (_tmp11_);
		_tmp14_ = self->priv->participant_widgets;
		_tmp15_ = gee_abstract_list_get ((GeeAbstractList*) participants, 0);
		_tmp16_ = (gchar*) _tmp15_;
		_tmp17_ = gee_abstract_map_get ((GeeAbstractMap*) _tmp14_, _tmp16_);
		_tmp18_ = (DinoUiParticipantWidget*) _tmp17_;
		gtk_widget_set_margin_bottom ((GtkWidget*) _tmp18_, margin_bottom);
		_g_object_unref0 (_tmp18_);
		_g_free0 (_tmp16_);
		_tmp19_ = self->priv->participant_widgets;
		_tmp20_ = gee_abstract_list_get ((GeeAbstractList*) participants, 0);
		_tmp21_ = (gchar*) _tmp20_;
		_tmp22_ = gee_abstract_map_get ((GeeAbstractMap*) _tmp19_, _tmp21_);
		_tmp23_ = (DinoUiParticipantWidget*) _tmp22_;
		gtk_widget_set_margin_start ((GtkWidget*) _tmp23_, margin_left);
		_g_object_unref0 (_tmp23_);
		_g_free0 (_tmp21_);
		_tmp24_ = self->priv->participant_widgets;
		_tmp25_ = gee_abstract_list_get ((GeeAbstractList*) participants, 0);
		_tmp26_ = (gchar*) _tmp25_;
		_tmp27_ = gee_abstract_map_get ((GeeAbstractMap*) _tmp24_, _tmp26_);
		_tmp28_ = (DinoUiParticipantWidget*) _tmp27_;
		dino_ui_participant_widget_on_row_changed (_tmp28_, margin_top == 0, margin_bottom == 0, margin_left == 0, margin_right == 0);
		_g_object_unref0 (_tmp28_);
		_g_free0 (_tmp26_);
		return;
	}
	_tmp29_ = gee_array_list_new (G_TYPE_STRING, (GBoxedCopyFunc) g_strdup, (GDestroyNotify) g_free, NULL, NULL, NULL);
	first_part = _tmp29_;
	_tmp30_ = gee_array_list_new (G_TYPE_STRING, (GBoxedCopyFunc) g_strdup, (GDestroyNotify) g_free, NULL, NULL, NULL);
	last_part = _tmp30_;
	{
		gint i = 0;
		i = 0;
		{
			gboolean _tmp31_ = FALSE;
			_tmp31_ = TRUE;
			while (TRUE) {
				gint _tmp33_;
				gint _tmp34_;
				gint _tmp35_;
				gint _tmp36_;
				if (!_tmp31_) {
					gint _tmp32_;
					_tmp32_ = i;
					i = _tmp32_ + 1;
				}
				_tmp31_ = FALSE;
				_tmp33_ = gee_abstract_collection_get_size ((GeeAbstractCollection*) participants);
				_tmp34_ = _tmp33_;
				if (!(i < _tmp34_)) {
					break;
				}
				_tmp35_ = gee_abstract_collection_get_size ((GeeAbstractCollection*) participants);
				_tmp36_ = _tmp35_;
				if (((gdouble) i) < ceil (((gdouble) _tmp36_) / ((gdouble) 2))) {
					GeeArrayList* _tmp37_;
					gpointer _tmp38_;
					gchar* _tmp39_;
					_tmp37_ = first_part;
					_tmp38_ = gee_abstract_list_get ((GeeAbstractList*) participants, i);
					_tmp39_ = (gchar*) _tmp38_;
					gee_abstract_collection_add ((GeeAbstractCollection*) _tmp37_, _tmp39_);
					_g_free0 (_tmp39_);
				} else {
					GeeArrayList* _tmp40_;
					gpointer _tmp41_;
					gchar* _tmp42_;
					_tmp40_ = last_part;
					_tmp41_ = gee_abstract_list_get ((GeeAbstractList*) participants, i);
					_tmp42_ = (gchar*) _tmp41_;
					gee_abstract_collection_add ((GeeAbstractCollection*) _tmp40_, _tmp42_);
					_g_free0 (_tmp42_);
				}
			}
		}
	}
	if (width > height) {
		GeeArrayList* _tmp43_;
		GeeArrayList* _tmp44_;
		_tmp43_ = first_part;
		dino_ui_call_window_reposition_participant_widgets_rec (self, _tmp43_, width / 2, height, margin_top, margin_right + (width / 2), margin_bottom, margin_left);
		_tmp44_ = last_part;
		dino_ui_call_window_reposition_participant_widgets_rec (self, _tmp44_, width / 2, height, margin_top, margin_right, margin_bottom, margin_left + (width / 2));
	} else {
		GeeArrayList* _tmp45_;
		GeeArrayList* _tmp46_;
		_tmp45_ = first_part;
		dino_ui_call_window_reposition_participant_widgets_rec (self, _tmp45_, width, height / 2, margin_top, margin_right, margin_bottom + (height / 2), margin_left);
		_tmp46_ = last_part;
		dino_ui_call_window_reposition_participant_widgets_rec (self, _tmp46_, width, height / 2, margin_top + (height / 2), margin_right, margin_bottom, margin_left);
	}
	_g_object_unref0 (last_part);
	_g_object_unref0 (first_part);
}

void
dino_ui_call_window_set_own_video (DinoUiCallWindow* self,
                                   GtkWidget* widget_)
{
	GtkWidget* own_video = NULL;
	GtkWidget* _tmp0_;
	GtkWidget* _tmp1_;
	GtkWidget* _tmp3_;
	GtkWidget* _tmp4_;
	GtkWidget* _tmp5_;
	GtkBox* _tmp6_;
	GtkWidget* _tmp7_;
	g_return_if_fail (self != NULL);
	dino_ui_call_window_unset_own_video (self);
	_tmp0_ = _g_object_ref0 (widget_);
	own_video = _tmp0_;
	_tmp1_ = own_video;
	if (_tmp1_ == NULL) {
		GtkBox* _tmp2_;
		_tmp2_ = (GtkBox*) gtk_box_new (GTK_ORIENTATION_HORIZONTAL, 0);
		g_object_ref_sink (_tmp2_);
		_g_object_unref0 (own_video);
		own_video = (GtkWidget*) _tmp2_;
	}
	_tmp3_ = own_video;
	_tmp4_ = own_video;
	gtk_widget_set_vexpand (_tmp4_, TRUE);
	gtk_widget_set_hexpand (_tmp3_, TRUE);
	_tmp5_ = own_video;
	gtk_widget_set_visible (_tmp5_, TRUE);
	_tmp6_ = self->own_video_box;
	_tmp7_ = own_video;
	gtk_box_append (_tmp6_, _tmp7_);
	_g_object_unref0 (own_video);
}

void
dino_ui_call_window_set_own_video_ratio (DinoUiCallWindow* self,
                                         gint width,
                                         gint height)
{
	g_return_if_fail (self != NULL);
	if ((width / height) > (150 / 100)) {
		self->priv->own_video_width = 150;
		self->priv->own_video_height = (height * 150) / width;
	} else {
		self->priv->own_video_width = (width * 100) / height;
		self->priv->own_video_height = 100;
	}
}

void
dino_ui_call_window_unset_own_video (DinoUiCallWindow* self)
{
	GtkWidget* to_remove = NULL;
	GtkBox* _tmp0_;
	GtkWidget* _tmp1_;
	GtkWidget* _tmp2_;
	g_return_if_fail (self != NULL);
	_tmp0_ = self->own_video_box;
	_tmp1_ = gtk_widget_get_first_child ((GtkWidget*) _tmp0_);
	_tmp2_ = _g_object_ref0 (_tmp1_);
	to_remove = _tmp2_;
	while (TRUE) {
		GtkWidget* _tmp3_;
		GtkBox* _tmp4_;
		GtkWidget* _tmp5_;
		GtkBox* _tmp6_;
		GtkWidget* _tmp7_;
		GtkWidget* _tmp8_;
		_tmp3_ = to_remove;
		if (!(_tmp3_ != NULL)) {
			break;
		}
		_tmp4_ = self->own_video_box;
		_tmp5_ = to_remove;
		gtk_box_remove (_tmp4_, _tmp5_);
		_tmp6_ = self->own_video_box;
		_tmp7_ = gtk_widget_get_first_child ((GtkWidget*) _tmp6_);
		_tmp8_ = _g_object_ref0 (_tmp7_);
		_g_object_unref0 (to_remove);
		to_remove = _tmp8_;
	}
	_g_object_unref0 (to_remove);
}

void
dino_ui_call_window_set_status (DinoUiCallWindow* self,
                                const gchar* participant_id,
                                const gchar* state)
{
	GeeHashMap* _tmp0_;
	gpointer _tmp1_;
	DinoUiParticipantWidget* _tmp2_;
	g_return_if_fail (self != NULL);
	g_return_if_fail (participant_id != NULL);
	g_return_if_fail (state != NULL);
	_tmp0_ = self->priv->participant_widgets;
	_tmp1_ = gee_abstract_map_get ((GeeAbstractMap*) _tmp0_, participant_id);
	_tmp2_ = (DinoUiParticipantWidget*) _tmp1_;
	dino_ui_participant_widget_set_status (_tmp2_, state);
	_g_object_unref0 (_tmp2_);
}

void
dino_ui_call_window_show_counterpart_ended (DinoUiCallWindow* self,
                                            const gchar* who_terminated,
                                            const gchar* reason_name,
                                            const gchar* reason_text)
{
	gchar* text = NULL;
	gchar* _tmp0_;
	DinoUiCallBottomBar* _tmp12_;
	const gchar* _tmp13_;
	g_return_if_fail (self != NULL);
	g_return_if_fail (who_terminated != NULL);
	self->priv->hide_control_elements = FALSE;
	dino_ui_call_window_reveal_control_elements (self);
	_tmp0_ = g_strdup ("");
	text = _tmp0_;
	if (g_strcmp0 (reason_name, XMPP_XEP_JINGLE_REASON_ELEMENT_SUCCESS) == 0) {
		const gchar* _tmp1_;
		gchar* _tmp2_;
		_tmp1_ = dino_gettext ("%s ended the call");
		_tmp2_ = g_strdup_printf (_tmp1_, who_terminated);
		_g_free0 (text);
		text = _tmp2_;
	} else {
		gboolean _tmp3_ = FALSE;
		if (g_strcmp0 (reason_name, XMPP_XEP_JINGLE_REASON_ELEMENT_DECLINE) == 0) {
			_tmp3_ = TRUE;
		} else {
			_tmp3_ = g_strcmp0 (reason_name, XMPP_XEP_JINGLE_REASON_ELEMENT_BUSY) == 0;
		}
		if (_tmp3_) {
			const gchar* _tmp4_;
			gchar* _tmp5_;
			_tmp4_ = dino_gettext ("%s declined the call");
			_tmp5_ = g_strdup_printf (_tmp4_, who_terminated);
			_g_free0 (text);
			text = _tmp5_;
		} else {
			if (reason_text == NULL) {
				const gchar* _tmp6_ = NULL;
				gchar* _tmp7_;
				_tmp6_ = reason_name;
				if (_tmp6_ == NULL) {
					_tmp6_ = "";
				}
				_tmp7_ = g_strconcat ("The call has been terminated" " ", _tmp6_, NULL);
				_g_free0 (text);
				text = _tmp7_;
			} else {
				const gchar* _tmp8_ = NULL;
				gchar* _tmp9_;
				gchar* _tmp10_;
				gchar* _tmp11_;
				_tmp8_ = reason_name;
				if (_tmp8_ == NULL) {
					_tmp8_ = "";
				}
				_tmp9_ = g_strconcat (reason_text, " ", NULL);
				_tmp10_ = _tmp9_;
				_tmp11_ = g_strconcat (_tmp10_, _tmp8_, NULL);
				_g_free0 (text);
				text = _tmp11_;
				_g_free0 (_tmp10_);
			}
		}
	}
	_tmp12_ = self->bottom_bar;
	_tmp13_ = text;
	dino_ui_call_bottom_bar_show_counterpart_ended (_tmp12_, _tmp13_);
	_g_free0 (text);
}

static void
dino_ui_call_window_reveal_control_elements (DinoUiCallWindow* self)
{
	GtkRevealer* _tmp0_;
	gboolean _tmp1_;
	gboolean _tmp2_;
	g_return_if_fail (self != NULL);
	_tmp0_ = self->bottom_bar_revealer;
	_tmp1_ = gtk_revealer_get_child_revealed (_tmp0_);
	_tmp2_ = _tmp1_;
	if (!_tmp2_) {
		dino_ui_call_window_set_controls_active (self, TRUE);
	}
	dino_ui_call_window_timeout_hide_control_elements (self);
}

static gboolean
__lambda65_ (DinoUiCallWindow* self)
{
	DinoUiCallBottomBar* _tmp0_;
	gboolean result;
	if (!self->priv->hide_control_elements) {
		result = FALSE;
		return result;
	}
	_tmp0_ = self->bottom_bar;
	if (dino_ui_call_bottom_bar_is_menu_active (_tmp0_)) {
		result = FALSE;
		return result;
	}
	dino_ui_call_window_set_controls_active (self, FALSE);
	self->priv->hide_control_handler = (guint) 0;
	result = FALSE;
	return result;
}

static gboolean
___lambda65__gsource_func (gpointer self)
{
	gboolean result;
	result = __lambda65_ ((DinoUiCallWindow*) self);
	return result;
}

static void
dino_ui_call_window_timeout_hide_control_elements (DinoUiCallWindow* self)
{
	g_return_if_fail (self != NULL);
	if (self->priv->hide_control_handler != ((guint) 0)) {
		g_source_remove (self->priv->hide_control_handler);
		self->priv->hide_control_handler = (guint) 0;
	}
	if (!self->priv->hide_control_elements) {
		return;
	}
	self->priv->hide_control_handler = g_timeout_add_seconds_full (G_PRIORITY_DEFAULT, (guint) 3, ___lambda65__gsource_func, g_object_ref (self), g_object_unref);
}

static gboolean
dino_ui_call_window_on_get_child_position (DinoUiCallWindow* self,
                                           GtkWidget* widget,
                                           GdkRectangle* allocation)
{
	GdkRectangle _vala_allocation = {0};
	GtkBox* _tmp0_;
	gboolean result;
	g_return_val_if_fail (self != NULL, FALSE);
	g_return_val_if_fail (widget != NULL, FALSE);
	memset (&_vala_allocation, 0, sizeof (GdkRectangle));
	_tmp0_ = self->own_video_box;
	if (widget == G_TYPE_CHECK_INSTANCE_CAST (_tmp0_, gtk_widget_get_type (), GtkWidget)) {
		gint width = 0;
		gint height = 0;
		width = gtk_widget_get_size ((GtkWidget*) self, GTK_ORIENTATION_HORIZONTAL);
		height = gtk_widget_get_size ((GtkWidget*) self, GTK_ORIENTATION_VERTICAL);
		_vala_allocation.width = self->priv->own_video_width;
		_vala_allocation.height = self->priv->own_video_height;
		_vala_allocation.x = (width - self->priv->own_video_width) - 20;
		_vala_allocation.y = (height - self->priv->own_video_height) - 20;
		result = TRUE;
		if (allocation) {
			*allocation = _vala_allocation;
		}
		return result;
	}
	result = FALSE;
	if (allocation) {
		*allocation = _vala_allocation;
	}
	return result;
}

gboolean
dino_ui_call_window_get_controls_active (DinoUiCallWindow* self)
{
	gboolean result;
	g_return_val_if_fail (self != NULL, FALSE);
	result = self->priv->_controls_active;
	return result;
}

void
dino_ui_call_window_set_controls_active (DinoUiCallWindow* self,
                                         gboolean value)
{
	gboolean old_value;
	g_return_if_fail (self != NULL);
	old_value = dino_ui_call_window_get_controls_active (self);
	if (old_value != value) {
		self->priv->_controls_active = value;
		g_object_notify_by_pspec ((GObject *) self, dino_ui_call_window_properties[DINO_UI_CALL_WINDOW_CONTROLS_ACTIVE_PROPERTY]);
	}
}

static gboolean
_dino_ui_call_window_on_get_child_position_gtk_overlay_get_child_position (GtkOverlay* _sender,
                                                                           GtkWidget* widget,
                                                                           GdkRectangle* allocation,
                                                                           gpointer self)
{
	gboolean result;
	result = dino_ui_call_window_on_get_child_position ((DinoUiCallWindow*) self, widget, allocation);
	return result;
}

static GObject *
dino_ui_call_window_constructor (GType type,
                                 guint n_construct_properties,
                                 GObjectConstructParam * construct_properties)
{
	GObject * obj;
	GObjectClass * parent_class;
	DinoUiCallWindow * self;
	GtkHeaderBar* _tmp0_;
	GtkHeaderBar* _tmp1_;
	GtkBox* _tmp2_;
	GtkBox* _tmp3_;
	GtkRevealer* _tmp4_;
	GtkHeaderBar* _tmp5_;
	GtkRevealer* _tmp6_;
	DinoUiCallBottomBar* _tmp7_;
	GtkBox* _tmp8_;
	GtkOverlay* _tmp9_;
	GtkGrid* _tmp10_;
	GtkOverlay* _tmp11_;
	GtkBox* _tmp12_;
	GtkOverlay* _tmp13_;
	GtkRevealer* _tmp14_;
	GtkOverlay* _tmp15_;
	GtkRevealer* _tmp16_;
	GtkOverlay* _tmp17_;
	GtkOverlay* _tmp18_;
	parent_class = G_OBJECT_CLASS (dino_ui_call_window_parent_class);
	obj = parent_class->constructor (type, n_construct_properties, construct_properties);
	self = G_TYPE_CHECK_INSTANCE_CAST (obj, DINO_UI_TYPE_CALL_WINDOW, DinoUiCallWindow);
	_tmp0_ = self->header_bar;
	gtk_widget_add_css_class ((GtkWidget*) _tmp0_, "call-header-bar");
	_tmp1_ = self->header_bar;
	_tmp2_ = (GtkBox*) gtk_box_new (GTK_ORIENTATION_VERTICAL, 0);
	g_object_ref_sink (_tmp2_);
	_tmp3_ = _tmp2_;
	gtk_header_bar_set_title_widget (_tmp1_, (GtkWidget*) _tmp3_);
	_g_object_unref0 (_tmp3_);
	_tmp4_ = self->header_bar_revealer;
	_tmp5_ = self->header_bar;
	gtk_revealer_set_child (_tmp4_, (GtkWidget*) _tmp5_);
	_tmp6_ = self->bottom_bar_revealer;
	_tmp7_ = self->bottom_bar;
	gtk_revealer_set_child (_tmp6_, (GtkWidget*) _tmp7_);
	_tmp8_ = self->own_video_box;
	gtk_widget_add_css_class ((GtkWidget*) _tmp8_, "own-video");
	gtk_widget_add_css_class ((GtkWidget*) self, "dino-call-window");
	_tmp9_ = self->overlay;
	_tmp10_ = self->grid;
	gtk_overlay_set_child (_tmp9_, (GtkWidget*) _tmp10_);
	_tmp11_ = self->overlay;
	_tmp12_ = self->own_video_box;
	gtk_overlay_add_overlay (_tmp11_, (GtkWidget*) _tmp12_);
	_tmp13_ = self->overlay;
	_tmp14_ = self->bottom_bar_revealer;
	gtk_overlay_add_overlay (_tmp13_, (GtkWidget*) _tmp14_);
	_tmp15_ = self->overlay;
	_tmp16_ = self->header_bar_revealer;
	gtk_overlay_add_overlay (_tmp15_, (GtkWidget*) _tmp16_);
	_tmp17_ = self->overlay;
	g_signal_connect_object (_tmp17_, "get-child-position", (GCallback) _dino_ui_call_window_on_get_child_position_gtk_overlay_get_child_position, self, 0);
	_tmp18_ = self->overlay;
	gtk_window_set_child ((GtkWindow*) self, (GtkWidget*) _tmp18_);
	return obj;
}

static void
dino_ui_call_window_class_init (DinoUiCallWindowClass * klass,
                                gpointer klass_data)
{
	dino_ui_call_window_parent_class = g_type_class_peek_parent (klass);
	g_type_class_adjust_private_offset (klass, &DinoUiCallWindow_private_offset);
	G_OBJECT_CLASS (klass)->get_property = _vala_dino_ui_call_window_get_property;
	G_OBJECT_CLASS (klass)->set_property = _vala_dino_ui_call_window_set_property;
	G_OBJECT_CLASS (klass)->constructor = dino_ui_call_window_constructor;
	G_OBJECT_CLASS (klass)->finalize = dino_ui_call_window_finalize;
	g_object_class_install_property (G_OBJECT_CLASS (klass), DINO_UI_CALL_WINDOW_CONTROLS_ACTIVE_PROPERTY, dino_ui_call_window_properties[DINO_UI_CALL_WINDOW_CONTROLS_ACTIVE_PROPERTY] = g_param_spec_boolean ("controls-active", "controls-active", "controls-active", TRUE, G_PARAM_STATIC_STRINGS | G_PARAM_READABLE | G_PARAM_WRITABLE));
	dino_ui_call_window_signals[DINO_UI_CALL_WINDOW_MENU_DUMP_DOT_SIGNAL] = g_signal_new ("menu-dump-dot", DINO_UI_TYPE_CALL_WINDOW, G_SIGNAL_RUN_LAST, 0, NULL, NULL, g_cclosure_marshal_VOID__VOID, G_TYPE_NONE, 0);
}

static void
dino_ui_call_window_instance_init (DinoUiCallWindow * self,
                                   gpointer klass)
{
	GtkOverlay* _tmp0_;
	GtkGrid* _tmp1_;
	DinoUiCallBottomBar* _tmp2_;
	GtkRevealer* _tmp3_ = NULL;
	GtkHeaderBar* _tmp4_ = NULL;
	GtkRevealer* _tmp5_ = NULL;
	GtkBox* _tmp6_ = NULL;
	GeeHashMap* _tmp7_;
	GeeArrayList* _tmp8_;
	GtkEventControllerFocus* _tmp9_;
	GtkGestureClick* _tmp10_ = NULL;
	GtkEventControllerMotion* _tmp11_;
	self->priv = dino_ui_call_window_get_instance_private (self);
	_tmp0_ = (GtkOverlay*) gtk_overlay_new ();
	g_object_ref_sink (_tmp0_);
	self->overlay = _tmp0_;
	_tmp1_ = (GtkGrid*) gtk_grid_new ();
	g_object_ref_sink (_tmp1_);
	self->grid = _tmp1_;
	_tmp2_ = dino_ui_call_bottom_bar_new ();
	g_object_ref_sink (_tmp2_);
	self->bottom_bar = _tmp2_;
	_tmp3_ = (GtkRevealer*) gtk_revealer_new ();
	gtk_widget_set_valign ((GtkWidget*) _tmp3_, GTK_ALIGN_END);
	gtk_revealer_set_transition_type (_tmp3_, GTK_REVEALER_TRANSITION_TYPE_CROSSFADE);
	gtk_revealer_set_transition_duration (_tmp3_, (guint) 200);
	g_object_ref_sink (_tmp3_);
	self->bottom_bar_revealer = _tmp3_;
	_tmp4_ = (GtkHeaderBar*) gtk_header_bar_new ();
	gtk_widget_set_valign ((GtkWidget*) _tmp4_, GTK_ALIGN_START);
	gtk_widget_set_halign ((GtkWidget*) _tmp4_, GTK_ALIGN_END);
	gtk_header_bar_set_show_title_buttons (_tmp4_, TRUE);
	gtk_widget_set_opacity ((GtkWidget*) _tmp4_, 0.0);
	g_object_ref_sink (_tmp4_);
	self->header_bar = _tmp4_;
	_tmp5_ = (GtkRevealer*) gtk_revealer_new ();
	gtk_widget_set_halign ((GtkWidget*) _tmp5_, GTK_ALIGN_END);
	gtk_widget_set_valign ((GtkWidget*) _tmp5_, GTK_ALIGN_START);
	gtk_revealer_set_transition_type (_tmp5_, GTK_REVEALER_TRANSITION_TYPE_SLIDE_LEFT);
	gtk_revealer_set_transition_duration (_tmp5_, (guint) 200);
	gtk_revealer_set_reveal_child (_tmp5_, FALSE);
	g_object_ref_sink (_tmp5_);
	self->header_bar_revealer = _tmp5_;
	_tmp6_ = (GtkBox*) gtk_box_new (GTK_ORIENTATION_HORIZONTAL, 0);
	gtk_widget_set_halign ((GtkWidget*) _tmp6_, GTK_ALIGN_END);
	gtk_widget_set_valign ((GtkWidget*) _tmp6_, GTK_ALIGN_END);
	g_object_ref_sink (_tmp6_);
	self->own_video_box = _tmp6_;
	_tmp7_ = gee_hash_map_new (G_TYPE_STRING, (GBoxedCopyFunc) g_strdup, (GDestroyNotify) g_free, DINO_UI_TYPE_PARTICIPANT_WIDGET, (GBoxedCopyFunc) g_object_ref, (GDestroyNotify) g_object_unref, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL);
	self->priv->participant_widgets = _tmp7_;
	_tmp8_ = gee_array_list_new (G_TYPE_STRING, (GBoxedCopyFunc) g_strdup, (GDestroyNotify) g_free, NULL, NULL, NULL);
	self->priv->participants = _tmp8_;
	_tmp9_ = (GtkEventControllerFocus*) gtk_event_controller_focus_new ();
	self->priv->this_focus_events = _tmp9_;
	_tmp10_ = (GtkGestureClick*) gtk_gesture_click_new ();
	gtk_gesture_single_set_touch_only ((GtkGestureSingle*) _tmp10_, TRUE);
	gtk_event_controller_set_propagation_phase ((GtkEventController*) _tmp10_, GTK_PHASE_CAPTURE);
	self->priv->this_gesture_events = _tmp10_;
	_tmp11_ = (GtkEventControllerMotion*) gtk_event_controller_motion_new ();
	self->priv->this_motion_events = _tmp11_;
	self->priv->latest_motion_x = (gdouble) -1;
	self->priv->latest_motion_y = (gdouble) -1;
	self->priv->own_video_width = 150;
	self->priv->own_video_height = 100;
	self->priv->hide_control_elements = FALSE;
	self->priv->hide_control_handler = (guint) 0;
	self->priv->_controls_active = TRUE;
}

static void
dino_ui_call_window_finalize (GObject * obj)
{
	DinoUiCallWindow * self;
	self = G_TYPE_CHECK_INSTANCE_CAST (obj, DINO_UI_TYPE_CALL_WINDOW, DinoUiCallWindow);
	_g_object_unref0 (self->controller);
	_g_object_unref0 (self->overlay);
	_g_object_unref0 (self->grid);
	_g_object_unref0 (self->bottom_bar);
	_g_object_unref0 (self->bottom_bar_revealer);
	_g_object_unref0 (self->header_bar);
	_g_object_unref0 (self->header_bar_revealer);
	_g_object_unref0 (self->own_video_box);
	_g_object_unref0 (self->priv->participant_widgets);
	_g_object_unref0 (self->priv->participants);
	_g_object_unref0 (self->priv->this_focus_events);
	_g_object_unref0 (self->priv->this_gesture_events);
	_g_object_unref0 (self->priv->this_motion_events);
	G_OBJECT_CLASS (dino_ui_call_window_parent_class)->finalize (obj);
}

static GType
dino_ui_call_window_get_type_once (void)
{
	static const GTypeInfo g_define_type_info = { sizeof (DinoUiCallWindowClass), (GBaseInitFunc) NULL, (GBaseFinalizeFunc) NULL, (GClassInitFunc) dino_ui_call_window_class_init, (GClassFinalizeFunc) NULL, NULL, sizeof (DinoUiCallWindow), 0, (GInstanceInitFunc) dino_ui_call_window_instance_init, NULL };
	GType dino_ui_call_window_type_id;
	dino_ui_call_window_type_id = g_type_register_static (gtk_window_get_type (), "DinoUiCallWindow", &g_define_type_info, 0);
	DinoUiCallWindow_private_offset = g_type_add_instance_private (dino_ui_call_window_type_id, sizeof (DinoUiCallWindowPrivate));
	return dino_ui_call_window_type_id;
}

GType
dino_ui_call_window_get_type (void)
{
	static volatile gsize dino_ui_call_window_type_id__once = 0;
	if (g_once_init_enter (&dino_ui_call_window_type_id__once)) {
		GType dino_ui_call_window_type_id;
		dino_ui_call_window_type_id = dino_ui_call_window_get_type_once ();
		g_once_init_leave (&dino_ui_call_window_type_id__once, dino_ui_call_window_type_id);
	}
	return dino_ui_call_window_type_id__once;
}

static void
_vala_dino_ui_call_window_get_property (GObject * object,
                                        guint property_id,
                                        GValue * value,
                                        GParamSpec * pspec)
{
	DinoUiCallWindow * self;
	self = G_TYPE_CHECK_INSTANCE_CAST (object, DINO_UI_TYPE_CALL_WINDOW, DinoUiCallWindow);
	switch (property_id) {
		case DINO_UI_CALL_WINDOW_CONTROLS_ACTIVE_PROPERTY:
		g_value_set_boolean (value, dino_ui_call_window_get_controls_active (self));
		break;
		default:
		G_OBJECT_WARN_INVALID_PROPERTY_ID (object, property_id, pspec);
		break;
	}
}

static void
_vala_dino_ui_call_window_set_property (GObject * object,
                                        guint property_id,
                                        const GValue * value,
                                        GParamSpec * pspec)
{
	DinoUiCallWindow * self;
	self = G_TYPE_CHECK_INSTANCE_CAST (object, DINO_UI_TYPE_CALL_WINDOW, DinoUiCallWindow);
	switch (property_id) {
		case DINO_UI_CALL_WINDOW_CONTROLS_ACTIVE_PROPERTY:
		dino_ui_call_window_set_controls_active (self, g_value_get_boolean (value));
		break;
		default:
		G_OBJECT_WARN_INVALID_PROPERTY_ID (object, property_id, pspec);
		break;
	}
}

static inline gpointer
dino_ui_outside_header_bar_get_instance_private (DinoUiOutsideHeaderBar* self)
{
	return G_STRUCT_MEMBER_P (self, DinoUiOutsideHeaderBar_private_offset);
}

DinoUiOutsideHeaderBar*
dino_ui_outside_header_bar_construct (GType object_type,
                                      GtkHeaderBar* header_bar)
{
	DinoUiOutsideHeaderBar * self = NULL;
	GtkHeaderBar* _tmp0_;
	g_return_val_if_fail (header_bar != NULL, NULL);
	self = (DinoUiOutsideHeaderBar*) g_object_new (object_type, NULL);
	_tmp0_ = _g_object_ref0 (header_bar);
	_g_object_unref0 (self->priv->header_bar);
	self->priv->header_bar = _tmp0_;
	return self;
}

DinoUiOutsideHeaderBar*
dino_ui_outside_header_bar_new (GtkHeaderBar* header_bar)
{
	return dino_ui_outside_header_bar_construct (DINO_UI_TYPE_OUTSIDE_HEADER_BAR, header_bar);
}

void
dino_ui_outside_header_bar_on_header_bar_size_allocate (DinoUiOutsideHeaderBar* self)
{
	GtkAllocation header_bar_alloc = {0};
	GtkHeaderBar* _tmp0_;
	GtkAllocation _tmp1_ = {0};
	GtkAllocation alloc = {0};
	GtkAllocation _tmp2_ = {0};
	GtkAllocation _tmp3_;
	g_return_if_fail (self != NULL);
	_tmp0_ = self->priv->header_bar;
	gtk_widget_get_allocation ((GtkWidget*) _tmp0_, &_tmp1_);
	header_bar_alloc = _tmp1_;
	gtk_widget_get_allocation ((GtkWidget*) self, &_tmp2_);
	alloc = _tmp2_;
	_tmp3_ = header_bar_alloc;
	alloc.height = _tmp3_.height;
}

static void
dino_ui_outside_header_bar_class_init (DinoUiOutsideHeaderBarClass * klass,
                                       gpointer klass_data)
{
	dino_ui_outside_header_bar_parent_class = g_type_class_peek_parent (klass);
	g_type_class_adjust_private_offset (klass, &DinoUiOutsideHeaderBar_private_offset);
	G_OBJECT_CLASS (klass)->finalize = dino_ui_outside_header_bar_finalize;
}

static void
dino_ui_outside_header_bar_instance_init (DinoUiOutsideHeaderBar * self,
                                          gpointer klass)
{
	self->priv = dino_ui_outside_header_bar_get_instance_private (self);
}

static void
dino_ui_outside_header_bar_finalize (GObject * obj)
{
	DinoUiOutsideHeaderBar * self;
	self = G_TYPE_CHECK_INSTANCE_CAST (obj, DINO_UI_TYPE_OUTSIDE_HEADER_BAR, DinoUiOutsideHeaderBar);
	_g_object_unref0 (self->priv->header_bar);
	G_OBJECT_CLASS (dino_ui_outside_header_bar_parent_class)->finalize (obj);
}

static GType
dino_ui_outside_header_bar_get_type_once (void)
{
	static const GTypeInfo g_define_type_info = { sizeof (DinoUiOutsideHeaderBarClass), (GBaseInitFunc) NULL, (GBaseFinalizeFunc) NULL, (GClassInitFunc) dino_ui_outside_header_bar_class_init, (GClassFinalizeFunc) NULL, NULL, sizeof (DinoUiOutsideHeaderBar), 0, (GInstanceInitFunc) dino_ui_outside_header_bar_instance_init, NULL };
	GType dino_ui_outside_header_bar_type_id;
	dino_ui_outside_header_bar_type_id = g_type_register_static (gtk_box_get_type (), "DinoUiOutsideHeaderBar", &g_define_type_info, 0);
	DinoUiOutsideHeaderBar_private_offset = g_type_add_instance_private (dino_ui_outside_header_bar_type_id, sizeof (DinoUiOutsideHeaderBarPrivate));
	return dino_ui_outside_header_bar_type_id;
}

GType
dino_ui_outside_header_bar_get_type (void)
{
	static volatile gsize dino_ui_outside_header_bar_type_id__once = 0;
	if (g_once_init_enter (&dino_ui_outside_header_bar_type_id__once)) {
		GType dino_ui_outside_header_bar_type_id;
		dino_ui_outside_header_bar_type_id = dino_ui_outside_header_bar_get_type_once ();
		g_once_init_leave (&dino_ui_outside_header_bar_type_id__once, dino_ui_outside_header_bar_type_id);
	}
	return dino_ui_outside_header_bar_type_id__once;
}

