From 2cdd142c3e8c2dde5c904208b411ed3bf575b1a9 Mon Sep 17 00:00:00 2001 From: ZingerLittleBee <6970999@gmail.com> Date: Mon, 23 May 2022 00:56:08 +0800 Subject: [PATCH 1/8] fix: desktop project name in docs --- docs/reference/src/platforms/desktop.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/reference/src/platforms/desktop.md b/docs/reference/src/platforms/desktop.md index 18393f132..985fbe6d9 100644 --- a/docs/reference/src/platforms/desktop.md +++ b/docs/reference/src/platforms/desktop.md @@ -11,7 +11,7 @@ Getting Set up with Dioxus-Desktop is quite easy. Make sure you have Rust and Ca ```shell $ cargo new --bin demo -$ cd app +$ cd demo ``` Add Dioxus with the `desktop` feature: From 60e74b2ec0d70a9ae1850340748a8fde66c396ed Mon Sep 17 00:00:00 2001 From: Reinis Mazeiks Date: Mon, 23 May 2022 09:35:47 +0300 Subject: [PATCH 2/8] Add missing event types to web (copied from desktop) Related: #416 --- packages/web/src/dom.rs | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/packages/web/src/dom.rs b/packages/web/src/dom.rs index 94d66460f..f321398dc 100644 --- a/packages/web/src/dom.rs +++ b/packages/web/src/dom.rs @@ -305,6 +305,8 @@ fn event_name_from_typ(typ: &str) -> &'static str { "keypress" => "keypress", "keyup" => "keyup", "focus" => "focus", + "focusout" => "focusout", + "focusin" => "focusin", "blur" => "blur", "change" => "change", "input" => "input", @@ -314,6 +316,7 @@ fn event_name_from_typ(typ: &str) -> &'static str { "click" => "click", "contextmenu" => "contextmenu", "doubleclick" => "doubleclick", + "dblclick" => "dblclick", "drag" => "drag", "dragend" => "dragend", "dragenter" => "dragenter", @@ -374,8 +377,8 @@ fn event_name_from_typ(typ: &str) -> &'static str { "volumechange" => "volumechange", "waiting" => "waiting", "toggle" => "toggle", - _ => { - panic!("unsupported event type") + a => { + panic!("unsupported event type {:?}", a); } } } From f792ed7a1771b4fd283ba1ae2499b716563125f4 Mon Sep 17 00:00:00 2001 From: Reinis Mazeiks Date: Mon, 23 May 2022 09:56:45 +0300 Subject: [PATCH 3/8] Update virtual_event_from_websys_event based on `make_synthetic_event` in the `desktop` crate --- packages/web/src/dom.rs | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/packages/web/src/dom.rs b/packages/web/src/dom.rs index f321398dc..ebcdefbcc 100644 --- a/packages/web/src/dom.rs +++ b/packages/web/src/dom.rs @@ -178,7 +178,7 @@ fn virtual_event_from_websys_event( }) } "keydown" | "keypress" | "keyup" => Arc::new(KeyboardData::from(event)), - "focus" | "blur" => Arc::new(FocusData {}), + "focus" | "blur" | "focusout" | "focusin" => Arc::new(FocusData {}), // todo: these handlers might get really slow if the input box gets large and allocation pressure is heavy // don't have a good solution with the serialized event problem @@ -258,9 +258,9 @@ fn virtual_event_from_websys_event( Arc::new(FormData { value, values }) } - "click" | "contextmenu" | "doubleclick" | "drag" | "dragend" | "dragenter" | "dragexit" - | "dragleave" | "dragover" | "dragstart" | "drop" | "mousedown" | "mouseenter" - | "mouseleave" | "mousemove" | "mouseout" | "mouseover" | "mouseup" => { + "click" | "contextmenu" | "dblclick" | "doubleclick" | "drag" | "dragend" | "dragenter" + | "dragexit" | "dragleave" | "dragover" | "dragstart" | "drop" | "mousedown" + | "mouseenter" | "mouseleave" | "mousemove" | "mouseout" | "mouseover" | "mouseup" => { Arc::new(MouseData::from(event)) } "pointerdown" | "pointermove" | "pointerup" | "pointercancel" | "gotpointercapture" From 6520b24d6746522f1a7a060b2de2066b0c40341c Mon Sep 17 00:00:00 2001 From: Alejandro Osornio <50227494+AOx0@users.noreply.github.com> Date: Wed, 1 Jun 2022 15:52:43 -0500 Subject: [PATCH 4/8] Update index.md + Fix outdated documentation --- docs/guide/src/interactivity/index.md | 20 ++++++++++---------- 1 file changed, 10 insertions(+), 10 deletions(-) diff --git a/docs/guide/src/interactivity/index.md b/docs/guide/src/interactivity/index.md index 02c39b5b1..670ca5a40 100644 --- a/docs/guide/src/interactivity/index.md +++ b/docs/guide/src/interactivity/index.md @@ -64,7 +64,7 @@ The most common hook you'll use for storing state is `use_state`. `use_state` pr ```rust fn App(cx: Scope)-> Element { - let (post, set_post) = use_state(&cx, || { + let post = use_state(&cx, || { PostData { id: Uuid::new_v4(), score: 10, @@ -112,11 +112,11 @@ For example, let's say we provide a button to generate a new post. Whenever the ```rust fn App(cx: Scope)-> Element { - let (post, set_post) = use_state(&cx, || PostData::new()); + let post = use_state(&cx, || PostData::new()); cx.render(rsx!{ button { - onclick: move |_| set_post(PostData::random()) + onclick: move |_| post.set(PostData::random()) "Generate a random post" } Post { props: &post } @@ -141,19 +141,19 @@ We can use tasks in our components to build a tiny stopwatch that ticks every se ```rust fn App(cx: Scope)-> Element { - let (elapsed, set_elapsed) = use_state(&cx, || 0); - - use_future(&cx, || { - to_owned![set_elapsed]; // explicitly capture this hook for use in async + let elapsed = use_state(&cx, || 0); + + use_future(&cx, (), |()| { + to_owned![elapsed]; // explicitly capture this hook for use in async async move { loop { - TimeoutFuture::from_ms(1000).await; - set_elapsed.modify(|i| i + 1) + gloo_timers::future::TimeoutFuture::new(1_000).await; + elapsed.modify(|i| i + 1) } } }); - rsx!(cx, div { "Current stopwatch time: {sec_elapsed}" }) + rsx!(cx, div { "Current stopwatch time: {elapsed}" }) } ``` From 2433b9d305a6baade4e55088a35064dc8b86aae0 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E7=8E=8B=E4=B8=80=E6=97=8B?= Date: Wed, 1 Jun 2022 23:07:54 +0800 Subject: [PATCH 5/8] docs: examples of mistakes docs: add hard_diff example missing parameter --- packages/core/src/properties.rs | 2 +- packages/core/src/virtual_dom.rs | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/packages/core/src/properties.rs b/packages/core/src/properties.rs index e81fc52a2..e138acaa6 100644 --- a/packages/core/src/properties.rs +++ b/packages/core/src/properties.rs @@ -33,7 +33,7 @@ impl<'a, const A: bool> FragmentBuilder<'a, A> { /// fn App(cx: Scope) -> Element { /// cx.render(rsx!{ /// CustomCard { -/// h1 {}2 +/// h1 {} /// p {} /// } /// }) diff --git a/packages/core/src/virtual_dom.rs b/packages/core/src/virtual_dom.rs index 8d3fd1789..2b1de0767 100644 --- a/packages/core/src/virtual_dom.rs +++ b/packages/core/src/virtual_dom.rs @@ -583,7 +583,7 @@ impl VirtualDom { /// /// *value.borrow_mut() = "goodbye"; /// - /// let edits = dom.diff(); + /// let edits = dom.hard_diff(ScopeId(0)); /// ``` pub fn hard_diff(&mut self, scope_id: ScopeId) -> Mutations { let mut diff_machine = DiffState::new(&self.scopes); From 09b1d379d7cf9aec17d39988378df5fedf3ff37b Mon Sep 17 00:00:00 2001 From: Jason Date: Thu, 9 Jun 2022 16:55:53 +0800 Subject: [PATCH 6/8] fix(desktop): makes release build working --- packages/desktop/Cargo.toml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/desktop/Cargo.toml b/packages/desktop/Cargo.toml index e61120d64..8c3317843 100644 --- a/packages/desktop/Cargo.toml +++ b/packages/desktop/Cargo.toml @@ -20,7 +20,7 @@ serde = "1.0.136" serde_json = "1.0.79" thiserror = "1.0.30" log = "0.4.14" -wry = { version = "0.16.0" } +wry = { version = "0.16.0", features = ["devtools"] } futures-channel = "0.3.21" tokio = { version = "1.16.1", features = [ "sync", From 38de26d0e4e1ea826de334e097130b5741b1ea27 Mon Sep 17 00:00:00 2001 From: Evan Almloff Date: Thu, 9 Jun 2022 10:31:11 -0500 Subject: [PATCH 7/8] remove attributes correctly --- packages/interpreter/src/interpreter.js | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/packages/interpreter/src/interpreter.js b/packages/interpreter/src/interpreter.js index a908ad74c..0c129efda 100644 --- a/packages/interpreter/src/interpreter.js +++ b/packages/interpreter/src/interpreter.js @@ -140,7 +140,9 @@ export class Interpreter { RemoveAttribute(root, field, ns) { const name = field; const node = this.nodes[root]; - if (ns !== null || ns !== undefined) { + if (ns == "style") { + node.style.removeProperty(name); + } else if (ns !== null || ns !== undefined) { node.removeAttributeNS(ns, name); } else if (name === "value") { node.value = ""; From 030f6d58fb2b699861f327d8e05543fe0a0097d9 Mon Sep 17 00:00:00 2001 From: CGQAQ Date: Fri, 10 Jun 2022 06:04:54 +0800 Subject: [PATCH 8/8] conditional devtools --- packages/desktop/Cargo.toml | 2 +- packages/desktop/src/desktop_context.rs | 7 ++++++- 2 files changed, 7 insertions(+), 2 deletions(-) diff --git a/packages/desktop/Cargo.toml b/packages/desktop/Cargo.toml index 8c3317843..e61120d64 100644 --- a/packages/desktop/Cargo.toml +++ b/packages/desktop/Cargo.toml @@ -20,7 +20,7 @@ serde = "1.0.136" serde_json = "1.0.79" thiserror = "1.0.30" log = "0.4.14" -wry = { version = "0.16.0", features = ["devtools"] } +wry = { version = "0.16.0" } futures-channel = "0.3.21" tokio = { version = "1.16.1", features = [ "sync", diff --git a/packages/desktop/src/desktop_context.rs b/packages/desktop/src/desktop_context.rs index 3d4bf0b26..d6d436a09 100644 --- a/packages/desktop/src/desktop_context.rs +++ b/packages/desktop/src/desktop_context.rs @@ -212,7 +212,12 @@ pub(super) fn handler( log::warn!("Open print modal failed: {e}"); } } - DevTool => webview.open_devtools(), + DevTool => { + #[cfg(debug_assertions)] + webview.open_devtools(); + #[cfg(not(debug_assertions))] + log::warn!("Devtools are disabled in release builds"); + } Eval(code) => { if let Err(e) = webview.evaluate_script(code.as_str()) {