summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorDjLegolas <djlegolas@protonmail.com>2021-12-24 19:06:03 +0200
committerCalum Lind <calumlind+deluge@gmail.com>2022-01-30 16:26:44 +0000
commit1cd005c27251a4350429344e73c8a31ca8d6331a (patch)
treeb0b349f92ace9ecd2febd59aa6cea7ff7b753559
parent4107bf8f25bd508845d6907d7fd60c4470e21911 (diff)
downloaddeluge-1cd005c27251a4350429344e73c8a31ca8d6331a.tar.gz
deluge-1cd005c27251a4350429344e73c8a31ca8d6331a.tar.bz2
deluge-1cd005c27251a4350429344e73c8a31ca8d6331a.zip
[Gtk] Fixed edit torrents dialogs windows close issues
Up until now, when closing the Add or Edit dialogs, of the `Edit Torrents`, using the top-right X button or using the Escape key, they were being destroyed without any way to reopening them, and it was breaking the `Edit Torrents` window itself. Now both dialogs have the right handlers for handing the closing process without breaking anything. Closes: deluge-torrent/deluge#324 Closes: https://dev.deluge-torrent.org/ticket/2434
-rw-r--r--deluge/ui/gtk3/edittrackersdialog.py48
1 files changed, 44 insertions, 4 deletions
diff --git a/deluge/ui/gtk3/edittrackersdialog.py b/deluge/ui/gtk3/edittrackersdialog.py
index 32ce2e76b..861e3924b 100644
--- a/deluge/ui/gtk3/edittrackersdialog.py
+++ b/deluge/ui/gtk3/edittrackersdialog.py
@@ -131,6 +131,11 @@ class EditTrackersDialog:
self.dialog.connect('response', self._on_response)
self.treeview.connect('button_press_event', self.on_button_press_event)
+ self.add_tracker_dialog.connect('key-press-event', self.on_key_add_press_event)
+ self.add_tracker_dialog.connect('delete-event', self.on_delete_event_add)
+ self.edit_tracker_entry.connect('key-press-event', self.on_key_edit_press_event)
+ self.edit_tracker_entry.connect('delete-event', self.on_delete_event_edit)
+
def run(self):
# Make sure we have a torrent_id.. if not just return
if self.torrent_id is None:
@@ -205,6 +210,7 @@ class EditTrackersDialog:
# Show the add tracker dialog
self.add_tracker_dialog.show()
self.builder.get_object('textview_trackers').grab_focus()
+ self.dialog.set_sensitive(False)
def on_button_remove_clicked(self, widget):
log.debug('on_button_remove_clicked')
@@ -233,11 +239,27 @@ class EditTrackersDialog:
self.edit_tracker_entry.grab_focus()
self.dialog.set_sensitive(False)
- def on_button_edit_cancel_clicked(self, widget):
- log.debug('on_button_edit_cancel_clicked')
+ def _close_edit_dialog(self):
self.dialog.set_sensitive(True)
self.edit_tracker_entry.hide()
+ def on_button_edit_cancel_clicked(self, widget):
+ """handles the cancel button"""
+ log.debug('on_button_edit_cancel_clicked')
+ self._close_edit_dialog()
+
+ def on_key_edit_press_event(self, widget, event):
+ """handles Escape key press"""
+ if event.keyval == Gdk.KEY_Escape:
+ log.debug('on_key_edit_press_event')
+ self._close_edit_dialog()
+
+ def on_delete_event_edit(self, widget, event):
+ """handles the Top-Right X button"""
+ log.debug('on_delete_event_edit')
+ self._close_edit_dialog()
+ return True
+
def on_button_edit_ok_clicked(self, widget):
log.debug('on_button_edit_ok_clicked')
selected = self.get_selected()
@@ -298,11 +320,29 @@ class EditTrackersDialog:
# Clear the entry widget and hide the dialog
textview_buf.set_text('')
+ self.dialog.set_sensitive(True)
self.add_tracker_dialog.hide()
- def on_button_add_cancel_clicked(self, widget):
- log.debug('on_button_add_cancel_clicked')
+ def _discard_and_close_add_dialog(self):
# Clear the entry widget and hide the dialog
b = Gtk.TextBuffer()
self.builder.get_object('textview_trackers').set_buffer(b)
+ self.dialog.set_sensitive(True)
self.add_tracker_dialog.hide()
+
+ def on_button_add_cancel_clicked(self, widget):
+ """handles the cancel button"""
+ log.debug('on_button_add_cancel_clicked')
+ self._discard_and_close_add_dialog()
+
+ def on_key_add_press_event(self, widget, event):
+ """handles Escape key press"""
+ if event.keyval == Gdk.KEY_Escape:
+ log.debug('on_key_add_press_event')
+ self._discard_and_close_add_dialog()
+
+ def on_delete_event_add(self, widget, event):
+ """handles the Top-Right X button"""
+ log.debug('on_delete_event_add')
+ self._discard_and_close_add_dialog()
+ return True