commit 0ee63fab09bd556718247c328cedc45d622d29ec
parent 44336aa8ce39ea0769ad03ec3fac483ddc0e855b
Author: Andrew Pimlott <andrew@pimlott.net>
Date: Thu, 12 Nov 2009 09:30:01 -0800
create undo records in thread view
Diffstat:
1 file changed, 18 insertions(+), 1 deletion(-)
diff --git a/lib/sup/modes/thread-view-mode.rb b/lib/sup/modes/thread-view-mode.rb
@@ -254,7 +254,8 @@ EOS
end
def edit_labels
- reserved_labels = @thread.labels.select { |l| LabelManager::RESERVED_LABELS.include? l }
+ old_labels = @thread.labels
+ reserved_labels = old_labels.select { |l| LabelManager::RESERVED_LABELS.include? l }
new_labels = BufferManager.ask_for_labels :label, "Labels for thread: ", @thread.labels
return unless new_labels
@@ -262,6 +263,10 @@ EOS
new_labels.each { |l| LabelManager << l }
update
UpdateManager.relay self, :labeled, @thread.first
+ UndoManager.register "labeling thread" do
+ @thread.labels = old_labels
+ UpdateManager.relay self, :labeled, @thread.first
+ end
end
def toggle_starred
@@ -476,6 +481,10 @@ EOS
dispatch op do
@thread.remove_label :inbox
UpdateManager.relay self, :archived, @thread.first
+ UndoManager.register "archiving 1 thread" do
+ @thread.apply_label :inbox
+ UpdateManager.relay self, :unarchived, @thread.first
+ end
end
end
@@ -483,6 +492,10 @@ EOS
dispatch op do
@thread.apply_label :spam
UpdateManager.relay self, :spammed, @thread.first
+ UndoManager.register "marking 1 thread as spam" do
+ @thread.remove_label :spam
+ UpdateManager.relay self, :unspammed, @thread.first
+ end
end
end
@@ -490,6 +503,10 @@ EOS
dispatch op do
@thread.apply_label :deleted
UpdateManager.relay self, :deleted, @thread.first
+ UndoManager.register "deleting 1 thread" do
+ @thread.remove_label :deleted
+ UpdateManager.relay self, :undeleted, @thread.first
+ end
end
end