[GTKUI] Fix quitting bypassing password lock

This commit is contained in:
Calum Lind 2014-07-07 18:50:27 +01:00
commit 5fdaf73fdf
2 changed files with 21 additions and 16 deletions

View file

@ -236,18 +236,29 @@ class MainWindow(component.Component):
:param shutdown: whether or not to shutdown the daemon as well :param shutdown: whether or not to shutdown the daemon as well
:type shutdown: boolean :type shutdown: boolean
""" """
def stop_gtk_reactor(result=None): def quit_gtkui():
try: def stop_gtk_reactor(result=None):
reactor.stop() try:
except ReactorNotRunning: reactor.stop()
log.debug("Attempted to stop the reactor but it is not running...") except ReactorNotRunning:
log.debug("Attempted to stop the reactor but it is not running...")
if shutdown: if shutdown:
client.daemon.shutdown().addCallback(stop_gtk_reactor) client.daemon.shutdown().addCallback(stop_gtk_reactor)
elif not client.is_classicmode() and client.connected(): elif not client.is_classicmode() and client.connected():
client.disconnect().addCallback(stop_gtk_reactor) client.disconnect().addCallback(stop_gtk_reactor)
else:
stop_gtk_reactor()
if self.config["tray_password"] and not self.visible():
dialog = PasswordDialog("Enter your pasword to Quit Deluge...")
def on_dialog_response(response_id):
if response_id == gtk.RESPONSE_OK:
if self.config["tray_password"] == sha(dialog.get_password()).hexdigest():
quit_gtkui()
dialog.run().addCallback(on_dialog_response)
else: else:
stop_gtk_reactor() quit_gtkui()
def load_window_state(self): def load_window_state(self):
x = self.config["window_x_pos"] x = self.config["window_x_pos"]

View file

@ -375,16 +375,10 @@ class SystemTray(component.Component):
def on_menuitem_quit_activate(self, menuitem): def on_menuitem_quit_activate(self, menuitem):
log.debug("on_menuitem_quit_activate") log.debug("on_menuitem_quit_activate")
if self.config["lock_tray"] and not self.window.visible():
self.window.present()
self.window.quit() self.window.quit()
def on_menuitem_quitdaemon_activate(self, menuitem): def on_menuitem_quitdaemon_activate(self, menuitem):
log.debug("on_menuitem_quitdaemon_activate") log.debug("on_menuitem_quitdaemon_activate")
if self.config["lock_tray"] and not self.window.visible():
self.window.present()
self.window.quit(shutdown=True) self.window.quit(shutdown=True)
def on_tray_setbwdown(self, widget, data=None): def on_tray_setbwdown(self, widget, data=None):