From 5321d24f2ab35773318d28c2880b12e5e5c2461e Mon Sep 17 00:00:00 2001 From: DjLegolas Date: Sat, 1 Jan 2022 21:53:27 +0200 Subject: [PATCH] [GTK] Use GtkSpinner when testing open port this switched was motivated by an error which happened each time the check port button was clicked, and was caused by the GtkImage when loading the loading.gif file on Windows: cannot register existing type 'GdkPixbufGdipAnim' Closes: deluge-torrent/deluge#329 --- deluge/ui/gtk3/glade/preferences_dialog.ui | 20 +++++++++++++++++++- deluge/ui/gtk3/preferences.py | 12 ++++++------ 2 files changed, 25 insertions(+), 7 deletions(-) diff --git a/deluge/ui/gtk3/glade/preferences_dialog.ui b/deluge/ui/gtk3/glade/preferences_dialog.ui index 4b223cb44..bb7262cdd 100644 --- a/deluge/ui/gtk3/glade/preferences_dialog.ui +++ b/deluge/ui/gtk3/glade/preferences_dialog.ui @@ -2727,6 +2727,24 @@ used sparingly. 1 + + + True + False + 10 + + + False + False + + + + + False + True + 2 + + True @@ -2742,7 +2760,7 @@ used sparingly. False True - 2 + 3 diff --git a/deluge/ui/gtk3/preferences.py b/deluge/ui/gtk3/preferences.py index 50d35d586..a1a986414 100644 --- a/deluge/ui/gtk3/preferences.py +++ b/deluge/ui/gtk3/preferences.py @@ -940,6 +940,7 @@ class Preferences(component.Component): def hide(self): self.window_open = False + self.builder.get_object('port_spinner').stop() self.builder.get_object('port_img').hide() self.pref_dialog.hide() @@ -1084,6 +1085,8 @@ class Preferences(component.Component): log.debug('on_test_port_clicked') def on_get_test(status): + self.builder.get_object('port_spinner').stop() + self.builder.get_object('port_spinner').hide() if status: self.builder.get_object('port_img').set_from_icon_name( 'emblem-ok-symbolic', Gtk.IconSize.MENU @@ -1096,12 +1099,9 @@ class Preferences(component.Component): self.builder.get_object('port_img').show() client.core.test_listen_port().addCallback(on_get_test) - # XXX: Consider using gtk.Spinner() instead of the loading gif - # It requires gtk.ver > 2.12 - self.builder.get_object('port_img').set_from_file( - deluge.common.get_pixmap('loading.gif') - ) - self.builder.get_object('port_img').show() + self.builder.get_object('port_spinner').start() + self.builder.get_object('port_spinner').show() + self.builder.get_object('port_img').hide() client.force_call() def on_plugin_toggled(self, renderer, path):