From b00e5befde243a9a07fb62558614f1ce6f74d4b3 Mon Sep 17 00:00:00 2001 From: yggverse Date: Tue, 1 Oct 2024 03:10:48 +0300 Subject: [PATCH] add new history record on request changed only --- src/browser/main/tab/page.rs | 10 +++++++++- src/browser/main/tab/page/navigation.rs | 4 ++++ src/browser/main/tab/page/navigation/history.rs | 10 ++++++++++ 3 files changed, 23 insertions(+), 1 deletion(-) diff --git a/src/browser/main/tab/page.rs b/src/browser/main/tab/page.rs index e5fe77f2..04b4f790 100644 --- a/src/browser/main/tab/page.rs +++ b/src/browser/main/tab/page.rs @@ -95,7 +95,15 @@ impl Page { &request, true, // activate (page reload) ); - navigation.history_add(request); + // Add new history record on request change + match navigation.history_current() { + Some(current) => { + if current != request { + navigation.history_add(request); + } + } + None => navigation.history_add(request), + } } }); diff --git a/src/browser/main/tab/page/navigation.rs b/src/browser/main/tab/page/navigation.rs index 5173efe9..8cae3ef2 100644 --- a/src/browser/main/tab/page/navigation.rs +++ b/src/browser/main/tab/page/navigation.rs @@ -93,6 +93,10 @@ impl Navigation { self.history.back(follow_to_index) } + pub fn history_current(&self) -> Option { + self.history.current() + } + pub fn history_forward(&self, follow_to_index: bool) -> Option { self.history.forward(follow_to_index) } diff --git a/src/browser/main/tab/page/navigation/history.rs b/src/browser/main/tab/page/navigation/history.rs index 05cf38d8..4ea2e02c 100644 --- a/src/browser/main/tab/page/navigation/history.rs +++ b/src/browser/main/tab/page/navigation/history.rs @@ -92,6 +92,16 @@ impl History { None } + pub fn current(&self) -> Option { + let index = self.index.borrow().clone(); // keep outside as borrow + if let Some(usize) = index { + if let Some(memory) = self.memory.borrow().get(usize) { + return Some(memory.request.clone()); + } + } + None + } + pub fn forward(&self, follow_to_index: bool) -> Option { let index = self.index.borrow().clone(); // keep outside as borrow if let Some(usize) = index {