From 3e89b5e05e143ce987f8b516d97b74a894da8521 Mon Sep 17 00:00:00 2001 From: yggverse Date: Sun, 26 Jan 2025 10:54:28 +0200 Subject: [PATCH] grab focus only on request entry is empty --- src/app/browser/window.rs | 4 ++-- src/app/browser/window/tab.rs | 10 +++++++--- src/app/browser/window/tab/item.rs | 2 +- 3 files changed, 10 insertions(+), 6 deletions(-) diff --git a/src/app/browser/window.rs b/src/app/browser/window.rs index 81bfe0c4..130ed4d3 100644 --- a/src/app/browser/window.rs +++ b/src/app/browser/window.rs @@ -47,7 +47,7 @@ impl Window { move |position, request, is_pinned, is_selected, is_attention, is_load| { tab.append( position, - request, + request.as_deref(), is_pinned, is_selected, is_attention, @@ -122,7 +122,7 @@ impl Window { action.open.on_activate({ let tab = tab.clone(); move |_, request| { - tab.append(Position::End, Some(request), false, true, false, true); + tab.append(Position::End, Some(&request), false, true, false, true); } }); diff --git a/src/app/browser/window/tab.rs b/src/app/browser/window/tab.rs index 35af2694..14f278b2 100644 --- a/src/app/browser/window/tab.rs +++ b/src/app/browser/window/tab.rs @@ -152,7 +152,7 @@ impl Tab { pub fn append( &self, position: Position, - request: Option, + request: Option<&str>, is_pinned: bool, is_selected: bool, is_attention: bool, @@ -175,13 +175,17 @@ impl Tab { ), )); + // Expect user input on tab appended has empty request entry + // * this action initiated here because should be applied on tab appending event only + if request.is_none() || request.is_some_and(|value| value.is_empty()) { + item.page.navigation.request.widget.entry.grab_focus(); + } + // Register dynamically created tab components in the HashMap index self.index .borrow_mut() .insert(item.id.clone(), item.clone()); - item.page.navigation.request.widget.entry.grab_focus(); - item } diff --git a/src/app/browser/window/tab/item.rs b/src/app/browser/window/tab/item.rs index af562e1f..546060b5 100644 --- a/src/app/browser/window/tab/item.rs +++ b/src/app/browser/window/tab/item.rs @@ -45,7 +45,7 @@ impl Item { ), (position, request, is_pinned, is_selected, is_attention, is_load): ( Position, - Option, + Option<&str>, bool, bool, bool,