Fix window creation callback for multi-window (#164353)

The windowing handler wasn't being created early enough and the view
wasn't visibile by default.
This commit is contained in:
Robert Ancell 2025-03-01 02:41:10 +13:00 committed by GitHub
parent 887d5dd9c2
commit 25b3a4743a
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
3 changed files with 4 additions and 3 deletions

View File

@ -556,6 +556,8 @@ static FlEngine* fl_engine_new_full(FlDartProject* project,
self->keyboard_manager = fl_keyboard_manager_new(self);
self->mouse_cursor_handler =
fl_mouse_cursor_handler_new(self->binary_messenger);
self->windowing_handler = fl_windowing_handler_new(self);
fl_renderer_set_engine(self->renderer, self);
return self;
@ -695,7 +697,6 @@ gboolean fl_engine_start(FlEngine* self, GError** error) {
fl_settings_handler_start(self->settings_handler, settings);
self->platform_handler = fl_platform_handler_new(self->binary_messenger);
self->windowing_handler = fl_windowing_handler_new(self);
setup_keyboard(self);

View File

@ -957,6 +957,7 @@ TEST(FlEngineTest, ChildObjects) {
EXPECT_NE(fl_engine_get_task_runner(engine), nullptr);
EXPECT_NE(fl_engine_get_keyboard_manager(engine), nullptr);
EXPECT_NE(fl_engine_get_mouse_cursor_handler(engine), nullptr);
EXPECT_NE(fl_engine_get_windowing_handler(engine), nullptr);
}
// NOLINTEND(clang-analyzer-core.StackAddressEscape)

View File

@ -61,8 +61,6 @@ static GtkWindow* fl_windowing_handler_create_window(
FlWindowingHandler* handler,
FlView* view) {
GtkWidget* window = gtk_window_new(GTK_WINDOW_TOPLEVEL);
gtk_widget_show(GTK_WIDGET(view));
gtk_container_add(GTK_CONTAINER(window), GTK_WIDGET(view));
return GTK_WINDOW(window);
@ -86,6 +84,7 @@ static FlMethodResponse* create_regular(FlWindowingSize* size,
}
FlView* view = fl_view_new_for_engine(engine);
gtk_widget_show(GTK_WIDGET(view));
GtkWindow* window;
g_signal_emit(self, signals[SIGNAL_CREATE_WINDOW], 0, view, &window);