From e15fbbcc9f4f9417411aa75089ce9d07e07131d1 Mon Sep 17 00:00:00 2001 From: Bastien Dejean Date: Mon, 19 Feb 2024 10:57:52 +0100 Subject: [PATCH] Don't close a named input with no keyboards --- crates/core/src/view/dictionary/mod.rs | 1 + crates/core/src/view/home/mod.rs | 1 + crates/core/src/view/named_input.rs | 4 +++- crates/core/src/view/reader/mod.rs | 1 + 4 files changed, 6 insertions(+), 1 deletion(-) diff --git a/crates/core/src/view/dictionary/mod.rs b/crates/core/src/view/dictionary/mod.rs index 5114f58..ba09040 100644 --- a/crates/core/src/view/dictionary/mod.rs +++ b/crates/core/src/view/dictionary/mod.rs @@ -256,6 +256,7 @@ impl Dictionary { rect.absorb(self.child(index-1).rect()); self.children.drain(index - 1 ..= index); + context.kb_rect = Rectangle::default(); rq.add(RenderData::expose(rect, UpdateMode::Gui)); hub.send(Event::Focus(None)).ok(); } else { diff --git a/crates/core/src/view/home/mod.rs b/crates/core/src/view/home/mod.rs index 0ca9563..619b46a 100644 --- a/crates/core/src/view/home/mod.rs +++ b/crates/core/src/view/home/mod.rs @@ -451,6 +451,7 @@ impl Home { } } + context.kb_rect = Rectangle::default(); hub.send(Event::Focus(None)).ok(); if update { let rect = rect![self.rect.min.x, y_min, diff --git a/crates/core/src/view/named_input.rs b/crates/core/src/view/named_input.rs index 755bfbb..894a62d 100644 --- a/crates/core/src/view/named_input.rs +++ b/crates/core/src/view/named_input.rs @@ -96,7 +96,9 @@ impl View for NamedInput { }, Event::Gesture(GestureEvent::Tap(center)) | Event::Gesture(GestureEvent::HoldFingerShort(center, _)) => { if !self.rect.includes(center) && !context.kb_rect.includes(center) { - bus.push_back(Event::Close(self.view_id)); + if !context.kb_rect.is_empty() { + bus.push_back(Event::Close(self.view_id)); + } true } else { self.rect.includes(center) diff --git a/crates/core/src/view/reader/mod.rs b/crates/core/src/view/reader/mod.rs index fb488ec..27c9702 100644 --- a/crates/core/src/view/reader/mod.rs +++ b/crates/core/src/view/reader/mod.rs @@ -1276,6 +1276,7 @@ impl Reader { rq.add(RenderData::expose(rect, UpdateMode::Gui)); } + context.kb_rect = Rectangle::default(); hub.send(Event::Focus(None)).ok(); } else { if !enable { -- 2.51.2