implement base button sensitivity update

This commit is contained in:
yggverse 2024-09-27 23:47:52 +03:00
parent 58d5c96f26
commit 98f88c5464
3 changed files with 15 additions and 5 deletions

View File

@ -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();

View File

@ -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<Uri>) {
self.widget.set_sensitive(match uri {
Some(uri) => "/" != uri.path(),
None => false,
});
}
// Getters

View File

@ -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<Uri> {
match Uri::parse(&self.widget.text(), UriFlags::NONE) {
Ok(uri) => Some(uri),
_ => None,
}
}
}