From 4a81297ef121d21d0f864a722bfe1d951c7533a5 Mon Sep 17 00:00:00 2001 From: yggverse Date: Thu, 20 Mar 2025 05:27:43 +0200 Subject: [PATCH] implement page info deprecate features --- src/app/browser/window/tab/item/client.rs | 3 +++ src/app/browser/window/tab/item/page/info.rs | 19 ++++++++++++++++++- 2 files changed, 21 insertions(+), 1 deletion(-) diff --git a/src/app/browser/window/tab/item/client.rs b/src/app/browser/window/tab/item/client.rs index 11094e15..abde4d76 100644 --- a/src/app/browser/window/tab/item/client.rs +++ b/src/app/browser/window/tab/item/client.rs @@ -37,6 +37,9 @@ impl Client { /// Route tab item `request` to protocol driver /// * or `navigation` entry if the value not provided pub fn handle(&self, request: &str, is_snap_history: bool) { + // Deprecate page info but keep it data as is + self.page.info.borrow_mut().deprecate(); + // Move focus out from navigation entry @TODO self.page.browser_action.escape.activate(None); diff --git a/src/app/browser/window/tab/item/page/info.rs b/src/app/browser/window/tab/item/page/info.rs index d293a86b..54a720ec 100644 --- a/src/app/browser/window/tab/item/page/info.rs +++ b/src/app/browser/window/tab/item/page/info.rs @@ -13,6 +13,9 @@ use gtk::gio::NetworkAddress; pub struct Info { /// Hold page events like connection phase and parsing time event: Vec, + /// Mark holder as deprecated on handle begin + /// * useful on some driver does not update status properly + is_deprecated: bool, /// Page content type mime: Option, /// Hold redirections chain with handled details @@ -34,6 +37,7 @@ impl Info { pub fn new() -> Self { Self { event: Vec::with_capacity(50), // estimated max events quantity for all drivers + is_deprecated: false, mime: None, redirect: None, remote: None, @@ -42,8 +46,16 @@ impl Info { } } + // Actions + + /// Mark `Self` as deprecated + /// * tip: usually called on page handler begin + pub fn deprecate(&mut self) { + self.is_deprecated = true; + } + // Setters - // useful to update `Self` as chain of values + // * useful to update `Self` as chain of values /// Take `Self`, convert it into the redirect member, /// then, return new `Self` back @@ -56,26 +68,31 @@ impl Info { pub fn add_event(&mut self, name: String) -> &mut Self { self.event.push(Event::now(name)); + self.is_deprecated = false; self } pub fn set_mime(&mut self, mime: Option) -> &mut Self { self.mime = mime; + self.is_deprecated = false; self } pub fn set_remote(&mut self, remote: Option) -> &mut Self { self.remote = remote; + self.is_deprecated = false; self } pub fn set_request(&mut self, request: Option) -> &mut Self { self.request = request; + self.is_deprecated = false; self } pub fn set_size(&mut self, size: Option) -> &mut Self { self.size = size; + self.is_deprecated = false; self } }