mirror of
https://github.com/DioxusLabs/dioxus
synced 2024-11-10 06:34:20 +00:00
chore: add transparency and overlay
This commit is contained in:
parent
4955cfc940
commit
d3ab397ad3
3 changed files with 51 additions and 20 deletions
|
@ -40,7 +40,7 @@ publish = false
|
|||
|
||||
[dev-dependencies]
|
||||
dioxus = { path = "./packages/dioxus" }
|
||||
dioxus-desktop = { path = "./packages/desktop" }
|
||||
dioxus-desktop = { path = "./packages/desktop", features = ["transparent"] }
|
||||
dioxus-ssr = { path = "./packages/ssr" }
|
||||
dioxus-router = { path = "./packages/router" }
|
||||
fermi = { path = "./packages/fermi" }
|
||||
|
|
|
@ -1,8 +1,8 @@
|
|||
use dioxus::prelude::*;
|
||||
use dioxus_desktop::{use_window, WindowBuilder};
|
||||
use dioxus_desktop::{tao::dpi::PhysicalPosition, use_window, Config, LogicalSize, WindowBuilder};
|
||||
|
||||
fn main() {
|
||||
dioxus_desktop::launch(app);
|
||||
dioxus_desktop::launch_cfg(app, make_config());
|
||||
}
|
||||
|
||||
fn app(cx: Scope) -> Element {
|
||||
|
@ -10,25 +10,54 @@ fn app(cx: Scope) -> Element {
|
|||
|
||||
cx.render(rsx! {
|
||||
div {
|
||||
button {
|
||||
onclick: move |_| {
|
||||
let dom = VirtualDom::new(app);
|
||||
window.new_window(dom, Default::default());
|
||||
},
|
||||
"Open overlay"
|
||||
width: "100%",
|
||||
height: "100%",
|
||||
background_color: "red",
|
||||
border: "1px solid black",
|
||||
|
||||
div {
|
||||
width: "100%",
|
||||
height: "10px",
|
||||
background_color: "black",
|
||||
onmousedown: move |_| window.drag(),
|
||||
}
|
||||
|
||||
"This is an overlay!"
|
||||
}
|
||||
})
|
||||
}
|
||||
|
||||
fn popup(cx: Scope) -> Element {
|
||||
cx.render(rsx! {
|
||||
div {
|
||||
width: "200px",
|
||||
height: "200px",
|
||||
background: "white",
|
||||
border: "1px solid black",
|
||||
"This is a popup!"
|
||||
}
|
||||
})
|
||||
fn make_config() -> dioxus_desktop::Config {
|
||||
dioxus_desktop::Config::default()
|
||||
.with_window(make_window())
|
||||
.with_custom_head(
|
||||
r#"
|
||||
<style type="text/css">
|
||||
html, body {
|
||||
height: 100px;
|
||||
margin: 0;
|
||||
overscroll-behavior-y: none;
|
||||
overscroll-behavior-x: none;
|
||||
overflow: hidden;
|
||||
}
|
||||
#main, #bodywrap {
|
||||
height: 100%;
|
||||
margin: 0;
|
||||
overscroll-behavior-x: none;
|
||||
overscroll-behavior-y: none;
|
||||
}
|
||||
</style>
|
||||
"#
|
||||
.to_owned(),
|
||||
)
|
||||
}
|
||||
|
||||
fn make_window() -> WindowBuilder {
|
||||
WindowBuilder::new()
|
||||
.with_transparent(true)
|
||||
.with_decorations(false)
|
||||
.with_resizable(false)
|
||||
.with_always_on_top(true)
|
||||
.with_position(PhysicalPosition::new(0, 0))
|
||||
.with_max_inner_size(LogicalSize::new(100000, 50))
|
||||
}
|
||||
|
|
|
@ -96,7 +96,9 @@ impl DesktopContext {
|
|||
let window = self.webview.window();
|
||||
|
||||
// if the drag_window has any errors, we don't do anything
|
||||
window.fullscreen().is_none().then(|| window.drag_window());
|
||||
if window.fullscreen().is_none() {
|
||||
window.drag_window().unwrap();
|
||||
}
|
||||
}
|
||||
|
||||
/// Toggle whether the window is maximized or not
|
||||
|
|
Loading…
Reference in a new issue