diff --git a/Changelog.md b/Changelog.md index 42c0e20..effa76c 100644 --- a/Changelog.md +++ b/Changelog.md @@ -1,6 +1,7 @@ # Changelog ## [v0.4.1-dev][Unreleased] - Unreleased +* Fixed error when loaded in gedit 47 ## [v0.4.0] - 2023-11-02 * Changed minimum gedit version required to 3.12 diff --git a/controlyourtabs/__init__.py b/controlyourtabs/__init__.py index f43fa89..b3db37d 100644 --- a/controlyourtabs/__init__.py +++ b/controlyourtabs/__init__.py @@ -372,11 +372,17 @@ def on_multi_notebook_tab_removed(self, multi, notebook, tab, tab_models): self.untrack_tab(tab, tab_models[notebook]) - def on_window_active_tab_changed(self, window, tab, tab_models): + def on_window_active_tab_changed(self, window, tab, tab_models=None): + # tab parameter removed in gedit 47 + if not tab_models: + tab_models = tab + tab = window.get_active_tab() + if log.query(log.INFO): Gedit.debug_plugin_message(log.format("%s, %s", window, tab)) - self.active_tab_changed(tab, tab_models[tab.get_parent()]) + if tab: + self.active_tab_changed(tab, tab_models[tab.get_parent()]) def on_window_key_press_event(self, window, event, tab_models): if log.query(log.INFO): diff --git a/controlyourtabs/tabinfo.py b/controlyourtabs/tabinfo.py index 881fcc7..1bea00e 100644 --- a/controlyourtabs/tabinfo.py +++ b/controlyourtabs/tabinfo.py @@ -35,15 +35,24 @@ # based on switch statement in _gedit_tab_get_icon() in gedit-tab.c -TAB_STATE_TO_NAMED_ICON = { - Gedit.TabState.STATE_PRINTING: 'printer-printing-symbolic', - Gedit.TabState.STATE_SHOWING_PRINT_PREVIEW: 'printer-symbolic', - Gedit.TabState.STATE_LOADING_ERROR: 'dialog-error-symbolic', - Gedit.TabState.STATE_REVERTING_ERROR: 'dialog-error-symbolic', - Gedit.TabState.STATE_SAVING_ERROR: 'dialog-error-symbolic', - Gedit.TabState.STATE_GENERIC_ERROR: 'dialog-error-symbolic', - Gedit.TabState.STATE_EXTERNALLY_MODIFIED_NOTIFICATION: 'dialog-warning-symbolic' -} +TAB_STATE_TO_NAMED_ICON = {} +try: + TAB_STATE_TO_NAMED_ICON[Gedit.TabState.PRINTING] = 'printer-printing-symbolic' + TAB_STATE_TO_NAMED_ICON[Gedit.TabState.SHOWING_PRINT_PREVIEW] = 'printer-symbolic' + TAB_STATE_TO_NAMED_ICON[Gedit.TabState.LOADING_ERROR] = 'dialog-error-symbolic' + TAB_STATE_TO_NAMED_ICON[Gedit.TabState.REVERTING_ERROR] = 'dialog-error-symbolic' + TAB_STATE_TO_NAMED_ICON[Gedit.TabState.SAVING_ERROR] = 'dialog-error-symbolic' + TAB_STATE_TO_NAMED_ICON[Gedit.TabState.GENERIC_ERROR] = 'dialog-error-symbolic' + TAB_STATE_TO_NAMED_ICON[Gedit.TabState.EXTERNALLY_MODIFIED_NOTIFICATION] = 'dialog-warning-symbolic' +except AttributeError: + # constant names before gedit 47 + TAB_STATE_TO_NAMED_ICON[Gedit.TabState.STATE_PRINTING] = 'printer-printing-symbolic' + TAB_STATE_TO_NAMED_ICON[Gedit.TabState.STATE_SHOWING_PRINT_PREVIEW] = 'printer-symbolic' + TAB_STATE_TO_NAMED_ICON[Gedit.TabState.STATE_LOADING_ERROR] = 'dialog-error-symbolic' + TAB_STATE_TO_NAMED_ICON[Gedit.TabState.STATE_REVERTING_ERROR] = 'dialog-error-symbolic' + TAB_STATE_TO_NAMED_ICON[Gedit.TabState.STATE_SAVING_ERROR] = 'dialog-error-symbolic' + TAB_STATE_TO_NAMED_ICON[Gedit.TabState.STATE_GENERIC_ERROR] = 'dialog-error-symbolic' + TAB_STATE_TO_NAMED_ICON[Gedit.TabState.STATE_EXTERNALLY_MODIFIED_NOTIFICATION] = 'dialog-warning-symbolic' try: # Gedit.TabState.STATE_PRINT_PREVIEWING removed in gedit 3.36