[gedit-plugins] git: Don't warn when the file browser becomes disabled
- From: Garrett Regier <gregier src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [gedit-plugins] git: Don't warn when the file browser becomes disabled
- Date: Fri, 22 Aug 2014 16:44:31 +0000 (UTC)
commit c4adf504ed2353ea01138727d42132f81cc9b620
Author: Garrett Regier <garrettregier gmail com>
Date: Sun Aug 17 18:45:32 2014 -0700
git: Don't warn when the file browser becomes disabled
If the file browser became disabled it was possible that we would
try to send a message to the now unregistered file browser. This
would then generate a warning for each and every file node.
plugins/git/git/windowactivatable.py | 35 ++++++++++++++++++++++++++-------
1 files changed, 27 insertions(+), 8 deletions(-)
---
diff --git a/plugins/git/git/windowactivatable.py b/plugins/git/git/windowactivatable.py
index 6f6767d..0a2de98 100644
--- a/plugins/git/git/windowactivatable.py
+++ b/plugins/git/git/windowactivatable.py
@@ -142,11 +142,21 @@ class GitWindowActivatable(GObject.Object, Gedit.WindowActivatable):
self.file_nodes = FileNodes()
self.monitors = {}
- self.window_signals = [
- self.window.connect('tab-removed', self.tab_removed),
- self.window.connect('focus-in-event', self.focus_in_event)
- ]
-
+ self.gobject_signals = {
+ self.window: [
+ self.window.connect('tab-removed', self.tab_removed),
+ self.window.connect('focus-in-event', self.focus_in_event)
+ ],
+
+ # GeditMessageBus.connect() shadows GObject.connect()
+ self.bus: [
+ GObject.Object.connect(self.bus, 'unregistered',
+ self.unregistered)
+ ]
+ }
+
+ # It is safe to connect to these even
+ # if the file browser is not enabled yet
self.bus_signals = [
self.bus.connect('/plugins/filebrowser', 'root_changed',
self.root_changed, None),
@@ -162,14 +172,16 @@ class GitWindowActivatable(GObject.Object, Gedit.WindowActivatable):
self.clear_monitors()
self.git_status_thread.terminate()
- for sid in self.window_signals:
- self.window.disconnect(sid)
+ for gobject, sids in self.gobject_signals.items():
+ for sid in sids:
+ # GeditMessageBus.disconnect() shadows GObject.disconnect()
+ GObject.Object.disconnect(gobject, sid)
for sid in self.bus_signals:
self.bus.disconnect(sid)
self.file_nodes = FileNodes()
- self.window_signals = []
+ self.gobject_signals = {}
self.bus_signals = []
self.refresh()
@@ -219,6 +231,13 @@ class GitWindowActivatable(GObject.Object, Gedit.WindowActivatable):
if repo is not None:
self.git_status_thread.push(repo, location)
+ def unregistered(self, bus, object_path, method):
+ # Avoid warnings like crazy if the file browser becomes disabled
+ if object_path == '/plugins/filebrowser' and method == 'root_changed':
+ self.clear_monitors()
+ self.git_status_thread.clear()
+ self.file_nodes = FileNodes()
+
def get_repository(self, location, is_dir=False):
return self.app_activatable.get_repository(location, is_dir)
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]