From a4bd28b22cbc4b03746a4fb8724d989fbc005460 Mon Sep 17 00:00:00 2001 From: James Magahern Date: Sun, 22 Feb 2026 00:19:43 -0800 Subject: [PATCH] gtk: image sizing fix --- gtk/dist/deb/build-deb.sh | 2 +- gtk/dist/rpm/kordophone.spec | 2 +- .../layouts/image-bubble-layout.vala | 19 ++++++++++++++----- .../transcript/transcript-drawing-area.vala | 3 ++- 4 files changed, 18 insertions(+), 8 deletions(-) diff --git a/gtk/dist/deb/build-deb.sh b/gtk/dist/deb/build-deb.sh index fb0e0ac..a118e6f 100755 --- a/gtk/dist/deb/build-deb.sh +++ b/gtk/dist/deb/build-deb.sh @@ -37,7 +37,7 @@ Priority: optional Architecture: ${ARCH} Maintainer: James Magahern Installed-Size: ${INSTALLED_SIZE_KB} -Depends: libgtk-4-1, libadwaita-1-0, libglib2.0-0, libgee-0.8-2, libsecret-1-0, kordophoned (>= 1.0.0) +Depends: libgtk-4-1, libadwaita-1-0, libglib2.0-0, libgee-0.8-2, libsecret-1-0, kordophoned (>= 1.3.0) Description: GTK4/Libadwaita client for Kordophone A GTK4/Libadwaita Linux client for the Kordophone client daemon. EOF diff --git a/gtk/dist/rpm/kordophone.spec b/gtk/dist/rpm/kordophone.spec index 2114710..c803f4c 100644 --- a/gtk/dist/rpm/kordophone.spec +++ b/gtk/dist/rpm/kordophone.spec @@ -23,7 +23,7 @@ Requires: libadwaita Requires: glib2 Requires: libgee Requires: libsecret -Requires: kordophoned >= 1.0.0 +Requires: kordophoned >= 1.3.0 %description A GTK4/Libadwaita Linux Client for the Kordophone client daemon. diff --git a/gtk/src/transcript/layouts/image-bubble-layout.vala b/gtk/src/transcript/layouts/image-bubble-layout.vala index 2e4f235..e76c195 100644 --- a/gtk/src/transcript/layouts/image-bubble-layout.vala +++ b/gtk/src/transcript/layouts/image-bubble-layout.vala @@ -60,22 +60,31 @@ private class ImageBubbleLayout : BubbleLayout this.is_downloaded = false; this.cached_texture = TextureCache.get_instance().get_texture(attachment_guid); + if (this.cached_texture != null) { + this.image_size = Graphene.Size() { + width = (float)this.cached_texture.get_width(), + height = (float)this.cached_texture.get_height() + }; + SizeCache.get_instance().set_size(attachment_guid, this.image_size); + return; + } + // Calculate image dimensions for layout calculate_image_dimensions(image_size); } private void calculate_image_dimensions(Graphene.Size? image_size) { - if (image_size != null) { - this.image_size = image_size; - return; - } - var cached_size = SizeCache.get_instance().get_size(attachment_guid); if (cached_size != null) { this.image_size = cached_size; return; } + if (image_size != null) { + this.image_size = image_size; + return; + } + this.image_size = Graphene.Size() { width = 200.0f, height = 150.0f }; } diff --git a/gtk/src/transcript/transcript-drawing-area.vala b/gtk/src/transcript/transcript-drawing-area.vala index aac1a05..888402e 100644 --- a/gtk/src/transcript/transcript-drawing-area.vala +++ b/gtk/src/transcript/transcript-drawing-area.vala @@ -328,6 +328,7 @@ private class TranscriptDrawingArea : Widget private void recompute_message_layouts() { var container_width = get_width(); float max_width = container_width * 0.90f; + float image_max_width = max_width * 0.75f; DateTime? last_date = null; string? last_sender = null; @@ -371,7 +372,7 @@ private class TranscriptDrawingArea : Widget }; } - var image_layout = new ImageBubbleLayout(attachment.guid, message.from_me, this, max_width, image_size); + var image_layout = new ImageBubbleLayout(attachment.guid, message.from_me, this, image_max_width, image_size); image_layout.id = @"image-$(attachment.guid)"; if (animate) {