[kupfer] core: Check if all stack objects are valid when we "come back"
- From: Ulrik Sverdrup <usverdrup src gnome org>
- To: svn-commits-list gnome org
- Cc:
- Subject: [kupfer] core: Check if all stack objects are valid when we "come back"
- Date: Sun, 24 Jan 2010 21:35:57 +0000 (UTC)
commit 76102e735dc38e03b52a7fbbf7de3ab12c0e393b
Author: Ulrik Sverdrup <ulrik sverdrup gmail com>
Date: Sun Jan 24 20:04:54 2010 +0100
core: Check if all stack objects are valid when we "come back"
When Kupfer is shown again on keypress we validate the current
selection. Now we also check the object stack ("comma trick"
selection).
kupfer/core/data.py | 25 +++++++++++++++++--------
1 files changed, 17 insertions(+), 8 deletions(-)
---
diff --git a/kupfer/core/data.py b/kupfer/core/data.py
index 2e59737..1bbc991 100644
--- a/kupfer/core/data.py
+++ b/kupfer/core/data.py
@@ -681,14 +681,18 @@ class DataController (gobject.GObject, pretty.OutputMixin):
This will trigger .select() with None if items
are not valid..
"""
- for paneenum, pane in ((SourcePane, self.source_pane),
- (ActionPane, self.action_pane)):
- sel = pane.get_selection()
- if not sel:
- break
- if hasattr(sel, "is_valid") and not sel.is_valid():
- self.emit("pane-reset", paneenum, None)
- self.select(paneenum, None)
+ def valid_check(obj):
+ return not (hasattr(obj, "is_valid") and not obj.is_valid())
+
+ for pane, panectl in self._panectl_table.items():
+ sel = panectl.get_selection()
+ if not valid_check(sel):
+ self.emit("pane-reset", pane, None)
+ self.select(pane, None)
+ if self._has_object_stack(pane):
+ new_stack = [o for o in panectl.object_stack if valid_check(o)]
+ if new_stack != panectl.object_stack:
+ self._set_object_stack(pane, new_stack)
def browse_up(self, pane):
"""Try to browse up to previous sources, from current
@@ -795,6 +799,11 @@ class DataController (gobject.GObject, pretty.OutputMixin):
def _has_object_stack(self, pane):
return pane in (SourcePane, ObjectPane)
+ def _set_object_stack(self, pane, newstack):
+ panectl = self._panectl_table[pane]
+ panectl.object_stack[:] = list(newstack)
+ self.emit("object-stack-changed", pane)
+
def object_stack_push(self, pane, object_):
"""
Push @object_ onto the stack
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]