use dioxus::prelude::*;
use dioxus_desktop::tao::event::WindowEvent;
use dioxus_desktop::use_wry_event_handler;
use dioxus_desktop::wry::application::event::Event as WryEvent;
use dioxus_desktop::{Config, WindowCloseBehaviour};

fn main() {
    let cfg = Config::new().with_close_behaviour(WindowCloseBehaviour::CloseWindow);

    dioxus_desktop::launch_cfg(app, cfg);
}

fn app(cx: Scope) -> Element {
    let focused = use_state(cx, || false);

    use_wry_event_handler(cx, {
        to_owned![focused];
        move |event, _| {
            if let WryEvent::WindowEvent {
                event: WindowEvent::Focused(new_focused),
                ..
            } = event
            {
                focused.set(*new_focused);
            }
        }
    });

    cx.render(rsx! {
        div{
            width: "100%",
            height: "100%",
            display: "flex",
            flex_direction: "column",
            align_items: "center",
            {
                if *focused.get() {
                    "This window is focused!"
                } else {
                    "This window is not focused!"
                }
            }
        }
    })
}
