use super::{WindowConfig, Layout, WindowHandle};

pub(crate) enum InternalQuery {
    None,
    Thread(u32),

    Create {
        handle:WindowHandle,
    },
    Close {
        handle:WindowHandle,
    },

    Move {
        handle:WindowHandle,
    },
    Resize {
        handle:WindowHandle,
        width:i32,
        height:i32,
    },


    Input {
        handle:WindowHandle,
    },

    DeviceChange,
    InputDeviceChange {
        state:bool,
        handle:usize,
    },
}

pub enum WindowQuery {
    None,

    // Create a new window
    Create {
        config:WindowConfig,
    },

    // Close a window
    Destroy {
        id:usize,
    },

    // Change window size
    Resize {
        width:u32,
        height:u32,
    },

    // Move window to coordinates
    Move {
        x:i32,
        y:i32,
    },

    // Set window show/hidden
    Visibility {
        id:usize,
        visible:bool,
    },

    // Get list of windows
    GetList { },
    List {
        ids:Vec<usize>,
    },

    // Set window properties
    Configure {
        id:usize,
    },
}

pub enum LayoutQuery {
    Build {
        id:usize,
    },
}
