From 12dbae104949d9f649a5a5d0f6f1b6051f7a95bc Mon Sep 17 00:00:00 2001 From: TAO TANG Date: Fri, 10 Oct 2025 17:50:09 +0800 Subject: [PATCH 1/2] Fix GLib::GObject::CRITICAL on out-of-range zoom factor (Gtk3::ImageView) The zoom factor have a minimum value 0.001 by default. To fit high-resolution display (4K/8K), a minimum value 0.0001 is perferred. Or boring CRITICAL messages are frequently printed. This commit gets the minimum value tuned for ImageView used by screenshot tabs. Fix shutter-project/shutter#774 --- bin/shutter | 20 ++++++++++++++++++-- 1 file changed, 18 insertions(+), 2 deletions(-) diff --git a/bin/shutter b/bin/shutter index 4528c5a4..ea84c9f3 100755 --- a/bin/shutter +++ b/bin/shutter @@ -57,6 +57,23 @@ BEGIN { ); } +package Gtk3::ImageViewCustom; + +use Gtk3::ImageView; +use Glib::Object::Subclass Gtk3::ImageView::, properties => [ + # override minium zoom + Glib::ParamSpec->float( + 'zoom', #name + 'zoom', #nick + 'zoom level', #blurb + 0.0001, #minium, tuned to fit 4K/8K modern display + 100, #maximum + 1.0, #default + [qw/readable writable/], + ), +]; + + package Shutter::App; #Deal with encoding problem @@ -71,7 +88,6 @@ use Pango; use Glib qw/TRUE FALSE/; use Gtk3 '-init'; use Glib::Object::Subclass qw/Gtk3::Application/; -use Gtk3::ImageView 10; #filename parsing use POSIX qw/ strftime /; @@ -4428,7 +4444,7 @@ sub STARTUP { unless ($is_all) { #Gtk2::ImageView - empty at first - $session_screens{$key}->{'image'} = Gtk3::ImageView->new(); + $session_screens{$key}->{'image'} = Gtk3::ImageViewCustom->new(); #$session_screens{$key}->{'image'}->set_show_frame(FALSE); $session_screens{$key}->{'image'}->set_fitting(TRUE); $session_screens{$key}->{'image'}->get_style_context->add_provider($css_provider_alpha, 0); From c202feb985f844d61f23badd1051dada00b50792 Mon Sep 17 00:00:00 2001 From: TAO TANG Date: Sat, 11 Oct 2025 23:08:23 +0800 Subject: [PATCH 2/2] update ImageView version check for shutter-project/shutter#775 --- bin/shutter | 2 +- cpanfile | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/bin/shutter b/bin/shutter index ea84c9f3..e534963b 100755 --- a/bin/shutter +++ b/bin/shutter @@ -59,7 +59,7 @@ BEGIN { package Gtk3::ImageViewCustom; -use Gtk3::ImageView; +use Gtk3::ImageView 10; use Glib::Object::Subclass Gtk3::ImageView::, properties => [ # override minium zoom Glib::ParamSpec->float( diff --git a/cpanfile b/cpanfile index 58342d08..656b95e4 100644 --- a/cpanfile +++ b/cpanfile @@ -1,7 +1,7 @@ requires "Gtk3"; requires "Pango"; requires "Glib"; -requires "Gtk3::ImageView"; +requires "Gtk3::ImageView", ">= 10"; requires "Number::Bytes::Human"; requires "XML::Simple"; requires "Net::DBus";