From 2c144c3182800e722b1aa8b4d18ea0c48d77728f Mon Sep 17 00:00:00 2001 From: yggverse Date: Sat, 14 Sep 2024 01:08:12 +0300 Subject: [PATCH] skip add same request value on history argument enabled --- src/app/browser/main/tab/page.cpp | 16 +++++++++++++--- src/app/browser/main/tab/page/navigation.cpp | 15 +++++++++++++++ src/app/browser/main/tab/page/navigation.hpp | 4 ++++ .../main/tab/page/navigation/history.cpp | 18 ++++++++++++++++++ .../main/tab/page/navigation/history.hpp | 4 ++++ 5 files changed, 54 insertions(+), 3 deletions(-) diff --git a/src/app/browser/main/tab/page.cpp b/src/app/browser/main/tab/page.cpp index 98297d6a..7e97dc13 100644 --- a/src/app/browser/main/tab/page.cpp +++ b/src/app/browser/main/tab/page.cpp @@ -161,10 +161,20 @@ void Page::navigation_reload( // Update navigation history? if (ADD_HISTORY) { - pageNavigation->history_add( - pageNavigation->get_request_text(), - true + // Skip same + Glib::ustring request; + + pageNavigation->try_history_current( + request ); + + if (request != pageNavigation->get_request_text()) + { + pageNavigation->history_add( + pageNavigation->get_request_text(), + true + ); + } } // Reset page data diff --git a/src/app/browser/main/tab/page/navigation.cpp b/src/app/browser/main/tab/page/navigation.cpp index d2dc93d4..e1e77722 100644 --- a/src/app/browser/main/tab/page/navigation.cpp +++ b/src/app/browser/main/tab/page/navigation.cpp @@ -209,6 +209,21 @@ bool Navigation::try_history_back( return false; } +bool Navigation::try_history_current( + Glib::ustring & request +) { + navigation::History::Memory match; + + if (navigationHistory->try_current(match)) + { + request = match.request; + + return true; + } + + return false; +} + bool Navigation::try_history_forward( Glib::ustring & request, const bool & UPDATE_MEMORY_INDEX diff --git a/src/app/browser/main/tab/page/navigation.hpp b/src/app/browser/main/tab/page/navigation.hpp index 280fb16e..b3f1c901 100644 --- a/src/app/browser/main/tab/page/navigation.hpp +++ b/src/app/browser/main/tab/page/navigation.hpp @@ -112,6 +112,10 @@ namespace app::browser::main::tab::page const bool & UPDATE_MEMORY_INDEX ); + bool try_history_current( + Glib::ustring & request + ); + bool try_history_forward( Glib::ustring & request, const bool & UPDATE_MEMORY_INDEX diff --git a/src/app/browser/main/tab/page/navigation/history.cpp b/src/app/browser/main/tab/page/navigation/history.cpp index 251a22f3..d9065d55 100644 --- a/src/app/browser/main/tab/page/navigation/history.cpp +++ b/src/app/browser/main/tab/page/navigation/history.cpp @@ -189,6 +189,24 @@ bool History::try_back( } } +bool History::try_current( + Memory & match +) { + try + { + match = memory.at( + index + ); + + return true; + } + + catch (std::out_of_range) + { + return false; + } +} + bool History::try_forward( Memory & match, const bool & UPDATE_MEMORY_INDEX diff --git a/src/app/browser/main/tab/page/navigation/history.hpp b/src/app/browser/main/tab/page/navigation/history.hpp index 104e7ed6..1216bcc0 100644 --- a/src/app/browser/main/tab/page/navigation/history.hpp +++ b/src/app/browser/main/tab/page/navigation/history.hpp @@ -117,6 +117,10 @@ namespace app::browser::main::tab::page::navigation const bool & UPDATE_MEMORY_INDEX ); + bool try_current( + Memory & match + ); + bool try_forward( Memory & match, const bool & UPDATE_MEMORY_INDEX