8#ifdef GDK_WINDOWING_X11
22#define FL_APPLICATION_GET_PRIVATE(app) \
23 ((FlApplicationPrivate*)fl_application_get_instance_private( \
33 G_ADD_PRIVATE(FlApplication))
36static
void first_frame_cb(FlApplication*
self, FlView*
view) {
41 gtk_window_present(GTK_WINDOW(
window));
47 FlPluginRegistry* registry) {}
52 GtkApplicationWindow*
window =
53 GTK_APPLICATION_WINDOW(gtk_application_window_new(GTK_APPLICATION(
self)));
62 gboolean use_header_bar =
TRUE;
63#ifdef GDK_WINDOWING_X11
64 GdkScreen* screen = gtk_window_get_screen(GTK_WINDOW(
window));
65 if (GDK_IS_X11_SCREEN(screen)) {
66 const gchar* wm_name = gdk_x11_screen_get_window_manager_name(screen);
67 if (g_strcmp0(wm_name,
"GNOME Shell") != 0) {
68 use_header_bar = FALSE;
73 GtkHeaderBar* header_bar = GTK_HEADER_BAR(gtk_header_bar_new());
75 gtk_header_bar_set_show_close_button(header_bar,
TRUE);
76 gtk_window_set_titlebar(GTK_WINDOW(
window), GTK_WIDGET(header_bar));
79 gtk_container_add(GTK_CONTAINER(
window), GTK_WIDGET(
view));
86 FlApplication*
self = FL_APPLICATION(application);
91 project,
priv->dart_entrypoint_arguments);
94 g_signal_connect_swapped(
view,
"first-frame", G_CALLBACK(first_frame_cb),
107 FL_PLUGIN_REGISTRY(
view));
114 FlApplication*
self = FL_APPLICATION(application);
118 priv->dart_entrypoint_arguments = g_strdupv(*arguments + 1);
121 if (!g_application_register(application,
nullptr, &
error)) {
122 g_warning(
"Failed to register: %s",
error->message);
129 g_application_activate(application);
137 FlApplication*
self = FL_APPLICATION(
object);
140 g_clear_pointer(&
priv->dart_entrypoint_arguments, g_strfreev);
142 G_OBJECT_CLASS(fl_application_parent_class)->dispose(
object);
147 G_APPLICATION_CLASS(klass)->local_command_line =
155 "register-plugins", fl_application_get_type(), G_SIGNAL_RUN_LAST,
156 G_STRUCT_OFFSET(FlApplicationClass, register_plugins),
nullptr,
nullptr,
157 nullptr, G_TYPE_NONE, 1, fl_plugin_registry_get_type());
159 "create-window", fl_application_get_type(), G_SIGNAL_RUN_LAST,
160 G_STRUCT_OFFSET(FlApplicationClass, create_window),
161 g_signal_accumulator_first_wins,
nullptr,
nullptr, GTK_TYPE_WINDOW, 1,
169 GApplicationFlags flags) {
170 return FL_APPLICATION(g_object_new(fl_application_get_type(),
171 "application-id", application_id,
"flags",
g_autoptr(FlEngine) engine
FlAccessibilityHandlerPrivate * priv
G_MODULE_EXPORT FlApplication * fl_application_new(const gchar *application_id, GApplicationFlags flags)
static void fl_application_dispose(GObject *object)
static void fl_application_init(FlApplication *self)
static GtkWindow * fl_application_create_window(FlApplication *self, FlView *view)
static guint fl_application_signals[LAST_SIGNAL]
@ SIGNAL_REGISTER_PLUGINS
static gboolean fl_application_local_command_line(GApplication *application, gchar ***arguments, int *exit_status)
#define FL_APPLICATION_GET_PRIVATE(app)
static void fl_application_register_plugins(FlApplication *self, FlPluginRegistry *registry)
static void fl_application_class_init(FlApplicationClass *klass)
static void fl_application_activate(GApplication *application)
G_DEFINE_TYPE_WITH_CODE(FlApplication, fl_application, GTK_TYPE_APPLICATION, G_ADD_PRIVATE(FlApplication)) static void first_frame_cb(FlApplication *self
G_MODULE_EXPORT void fl_dart_project_set_dart_entrypoint_arguments(FlDartProject *self, char **argv)
G_MODULE_EXPORT FlDartProject * fl_dart_project_new()
const uint8_t uint32_t uint32_t GError ** error
G_MODULE_EXPORT FlView * fl_view_new(FlDartProject *project)
void gtk_widget_show(GtkWidget *widget)
GtkWidget * gtk_widget_get_toplevel(GtkWidget *widget)
void gtk_widget_realize(GtkWidget *widget)
gchar ** dart_entrypoint_arguments