fix: error when runnin with arg --version

on_shutdown is called even in command line mode (as expected), but
`self.statepath` is not initialized when running diffuse with the
argument `--version`.
This commit is contained in:
Romain Failliot 2023-07-01 16:12:21 -04:00
parent 7a616ceaab
commit f5e1173e27
1 changed files with 8 additions and 4 deletions

View File

@ -22,6 +22,7 @@ import sys
import encodings import encodings
from gettext import gettext as _ from gettext import gettext as _
from typing import Optional
from diffuse import constants, utils from diffuse import constants, utils
from diffuse.resources import theResources from diffuse.resources import theResources
@ -35,13 +36,14 @@ from gi.repository import Gio, GLib, Gtk # type: ignore # noqa: E402
class DiffuseApplication(Gtk.Application): class DiffuseApplication(Gtk.Application):
"""The main application class.""" """The main application class."""
def __init__(self, sysconfigdir): def __init__(self, sysconfigdir: str):
super().__init__( super().__init__(
application_id=constants.APP_ID, application_id=constants.APP_ID,
flags=Gio.ApplicationFlags.HANDLES_COMMAND_LINE | Gio.ApplicationFlags.NON_UNIQUE) flags=Gio.ApplicationFlags.HANDLES_COMMAND_LINE | Gio.ApplicationFlags.NON_UNIQUE)
self.window = None
self.sysconfigdir = sysconfigdir self.sysconfigdir = sysconfigdir
self.window: Optional[DiffuseWindow] = None
self.statepath: str = ""
self.connect('shutdown', self.on_shutdown) self.connect('shutdown', self.on_shutdown)
@ -196,7 +198,8 @@ also retrieve revisions of files from several VCSs for comparison and merging.''
def do_activate(self) -> None: def do_activate(self) -> None:
"""Called when the application is activated.""" """Called when the application is activated."""
self.window.present() if self.window is not None:
self.window.present()
def do_command_line(self, command_line): def do_command_line(self, command_line):
"""Called to treat the command line options.""" """Called to treat the command line options."""
@ -369,7 +372,8 @@ also retrieve revisions of files from several VCSs for comparison and merging.''
return 0 return 0
def on_shutdown(self, application: Gio.Application) -> None: def on_shutdown(self, application: Gio.Application) -> None:
self.window.save_state(self.statepath) if self.window is not None and self.statepath != '':
self.window.save_state(self.statepath)
def main(version: str, sysconfigdir: str) -> int: def main(version: str, sysconfigdir: str) -> int: