diff --git a/src/browser/main/tab/page/navigation.rs b/src/browser/main/tab/page/navigation.rs index f7a4dadc..e96ad717 100644 --- a/src/browser/main/tab/page/navigation.rs +++ b/src/browser/main/tab/page/navigation.rs @@ -65,7 +65,7 @@ impl Navigation { // Actions pub fn update(&self) { - self.base.update(); + self.base.update(self.request.uri()); self.history.update(); self.reload.update(!self.request.is_empty()); self.request.update(); diff --git a/src/browser/main/tab/page/navigation/base.rs b/src/browser/main/tab/page/navigation/base.rs index ba65c648..506974fd 100644 --- a/src/browser/main/tab/page/navigation/base.rs +++ b/src/browser/main/tab/page/navigation/base.rs @@ -1,4 +1,4 @@ -use gtk::Button; +use gtk::{glib::Uri, prelude::WidgetExt, Button}; pub struct Base { widget: Button, @@ -18,8 +18,11 @@ impl Base { } // Actions - pub fn update(&self) { - // @TODO + pub fn update(&self, uri: Option) { + self.widget.set_sensitive(match uri { + Some(uri) => "/" != uri.path(), + None => false, + }); } // Getters diff --git a/src/browser/main/tab/page/navigation/request.rs b/src/browser/main/tab/page/navigation/request.rs index aa3d23c8..3835b573 100644 --- a/src/browser/main/tab/page/navigation/request.rs +++ b/src/browser/main/tab/page/navigation/request.rs @@ -1,5 +1,5 @@ use gtk::{ - glib::GString, + glib::{GString, Uri, UriFlags}, prelude::{EditableExt, EntryExt, WidgetExt}, Entry, }; @@ -66,4 +66,11 @@ impl Request { pub fn text(&self) -> GString { self.widget.text() } + + pub fn uri(&self) -> Option { + match Uri::parse(&self.widget.text(), UriFlags::NONE) { + Ok(uri) => Some(uri), + _ => None, + } + } }