diff --git a/crates/moonhare_game/src/lib.rs b/crates/moonhare_game/src/lib.rs index b352031..c84e37f 100644 --- a/crates/moonhare_game/src/lib.rs +++ b/crates/moonhare_game/src/lib.rs @@ -34,6 +34,7 @@ impl Game { pub fn add_window(&mut self) { moonhare_log::info(format!("Adding window to {:?}", self)); Window::create(); + } } diff --git a/crates/moonhare_window/src/lib.rs b/crates/moonhare_window/src/lib.rs index e48eb99..6ac74f3 100644 --- a/crates/moonhare_window/src/lib.rs +++ b/crates/moonhare_window/src/lib.rs @@ -2,6 +2,9 @@ use std::marker; +#[cfg(target_os = "linux")] +use crate::platforms::gtk_window::GTKWindow; + pub mod window_config; pub mod platforms; @@ -24,20 +27,24 @@ pub trait MoonhareWindow { } pub struct Window { - } + impl Window { /// creates a gtk4 window #[cfg(target_os = "linux")] pub fn create() { + use std::thread; + use gtk4::gio::prelude::ApplicationExtManual; use crate::platforms::gtk_window::GTKWindow; - - let application = GTKWindow::init(); - application.get_application().run(); + thread::spawn(|| { + moonhare_log::info("Created Window thread"); + let application = GTKWindow::init(); + application.get_application().run(); + }); } #[cfg(not(target_os = "linux"))] diff --git a/crates/moonhare_window/src/platforms/gtk_window.rs b/crates/moonhare_window/src/platforms/gtk_window.rs index e6e09d6..645603d 100644 --- a/crates/moonhare_window/src/platforms/gtk_window.rs +++ b/crates/moonhare_window/src/platforms/gtk_window.rs @@ -1,8 +1,6 @@ -use std::marker::PhantomData; +use gtk4::{gio::prelude::ApplicationExt, prelude::{GtkWindowExt, WidgetExt}, Application, ApplicationWindow}; -use gtk4::{gio::prelude::{ApplicationExt, ApplicationExtManual}, glib::object::ObjectExt, prelude::{GtkWindowExt, WidgetExt}, subclass::prelude::GtkApplicationImpl, Application, ApplicationWindow}; - -use crate::{MoonhareWindow, WindowResult}; +use crate::{window_config, MoonhareWindow}; #[derive(Debug)] pub struct GTKWindow { @@ -18,11 +16,12 @@ impl GTKWindow { fn build_ui(application: &Application) { let window = ApplicationWindow::new(application); - window.set_title(Some("Moonhare Engine GTK")); - window.set_default_size(1280, 720); + let window_config = window_config::WindowConfig::default(); + window.set_title(Some(format!("{} GTK", window_config.title).as_str())); + window.set_default_size(window_config.width as i32, window_config.height as i32); + window.set_visible(window_config.visble); window.show(); - } }