v0.0.9 - Fix tab height: scale favicons to 16x16 and pin favicon image size so large favicons no longer inflate the tab strip

This commit is contained in:
Laan Tungir
2026-09-27 19:20:10 -04:00
parent 4aec3db05b
commit 33123f8a45
5 changed files with 16 additions and 7 deletions
Generated
+1 -1
View File
@@ -3055,7 +3055,7 @@ dependencies = [
[[package]] [[package]]
name = "sovereign_browser" name = "sovereign_browser"
version = "0.0.8" version = "0.0.9"
dependencies = [ dependencies = [
"anyhow", "anyhow",
"base64", "base64",
+1 -1
View File
@@ -6,7 +6,7 @@ members = [
[package] [package]
name = "sovereign_browser" name = "sovereign_browser"
version = "0.0.8" version = "0.0.9"
edition = "2021" edition = "2021"
license = "MIT" license = "MIT"
description = "A Linux x86 web browser built on WebKitGTK with Nostr identity" description = "A Linux x86 web browser built on WebKitGTK with Nostr identity"
+1 -1
View File
@@ -1 +1 @@
0.0.8 0.0.9
+11 -2
View File
@@ -455,6 +455,8 @@ pub fn tab_manager_new_tab(notebook: &gtk::Notebook, ctx: &WebContext, url: Opti
let favicon = gtk::Image::new(); let favicon = gtk::Image::new();
favicon.set_valign(gtk::Align::Center); favicon.set_valign(gtk::Align::Center);
// Fixed 16×16 so a large favicon can never inflate the tab height.
favicon.set_size_request(16, 16);
tab_label.pack_start(&favicon, false, false, 0); tab_label.pack_start(&favicon, false, false, 0);
let title_label = gtk::Label::new(Some("New Tab")); let title_label = gtk::Label::new(Some("New Tab"));
@@ -526,7 +528,8 @@ pub fn tab_manager_new_tab(notebook: &gtk::Notebook, ctx: &WebContext, url: Opti
// WebKitGTK's favicon database (enabled in web_context) fetches and // WebKitGTK's favicon database (enabled in web_context) fetches and
// caches favicons; `notify::favicon` fires when one is ready and // caches favicons; `notify::favicon` fires when one is ready and
// `webview.favicon()` returns a cairo surface. Mirrors the C // `webview.favicon()` returns a cairo surface. Mirrors the C
// `on_favicon_changed` (tab_manager.c:948). // `on_favicon_changed` (tab_manager.c:948), including scaling large
// favicons down to 16×16 so they don't inflate the tab height.
let favicon_clone = favicon.clone(); let favicon_clone = favicon.clone();
webview.connect_favicon_notify(move |wv| { webview.connect_favicon_notify(move |wv| {
if let Some(surface) = wv.favicon() { if let Some(surface) = wv.favicon() {
@@ -534,7 +537,13 @@ pub fn tab_manager_new_tab(notebook: &gtk::Notebook, ctx: &WebContext, url: Opti
let w = img.width(); let w = img.width();
let h = img.height(); let h = img.height();
if w > 0 && h > 0 { if w > 0 && h > 0 {
if let Some(pixbuf) = gdk::pixbuf_get_from_surface(&img, 0, 0, w, h) { if let Some(raw) = gdk::pixbuf_get_from_surface(&img, 0, 0, w, h) {
let pixbuf = if w > 16 || h > 16 {
raw.scale_simple(16, 16, gdk_pixbuf::InterpType::Bilinear)
.unwrap_or(raw)
} else {
raw
};
favicon_clone.set_from_pixbuf(Some(&pixbuf)); favicon_clone.set_from_pixbuf(Some(&pixbuf));
} }
} }
+2 -2
View File
@@ -1,7 +1,7 @@
//! Version information for sovereign_browser //! Version information for sovereign_browser
/// The current version of sovereign_browser (with leading 'v'). /// The current version of sovereign_browser (with leading 'v').
pub const VERSION: &str = "v0.0.8"; pub const VERSION: &str = "v0.0.9";
/// Major version number. /// Major version number.
pub const VERSION_MAJOR: u32 = 0; pub const VERSION_MAJOR: u32 = 0;
@@ -10,4 +10,4 @@ pub const VERSION_MAJOR: u32 = 0;
pub const VERSION_MINOR: u32 = 0; pub const VERSION_MINOR: u32 = 0;
/// Patch version number. /// Patch version number.
pub const VERSION_PATCH: u32 = 8; pub const VERSION_PATCH: u32 = 9;