]> git.cworth.org Git - sup/commitdiff
Merge branch 'master' into next
authorWilliam Morgan <wmorgan-sup@masanjin.net>
Thu, 10 Jan 2008 17:44:16 +0000 (09:44 -0800)
committerWilliam Morgan <wmorgan-sup@masanjin.net>
Thu, 10 Jan 2008 17:44:16 +0000 (09:44 -0800)
lib/sup/buffer.rb
lib/sup/thread.rb

index f724f88e778fbf1a3d697d780ba1fac805f8460a..2a7878710672de00c02679d1c4da8e61e810ef39 100644 (file)
@@ -63,7 +63,6 @@ class Buffer
     @title = opts[:title] || ""
     @force_to_top = opts[:force_to_top] || false
     @x, @y, @width, @height = 0, 0, width, height
-    @in_x = ENV["TERM"] =~ /(xterm|rxvt|screen)/
   end
 
   def content_height; @height - 1; end
@@ -178,6 +177,7 @@ EOS
     @textfields = {}
     @flash = nil
     @shelled = @asking = false
+    @in_x = ENV["TERM"] =~ /(xterm|rxvt|screen)/
 
     self.class.i_am_the_instance self
   end
index f54c935339c84841d22d59edb98fca7bd9da1457..83f0db71aa4a08adfda53bd469d234ba684ac338 100644 (file)
@@ -289,7 +289,10 @@ class ThreadSet
     remove_container c
     p.children << c
     c.parent = p
-    update_threading_for c
+
+    ## if the child was previously a top-level container, it now ain't,
+    ## so ditch our thread and kill it if necessary
+    prune_thread_of c
   end
   private :link
 
@@ -298,20 +301,18 @@ class ThreadSet
   end
   private :remove_container
 
-  def update_threading_for c
-    ## if the child was previously a top-level container, but now is not,
-    ## ditch our thread and kill it if necessary
-    if c.thread && !c.root?
-      c.thread.drop c
-      @threads.delete_if { |k, v| v == c.thread } if c.thread.empty?
-      c.thread = nil
-    end
+  def prune_thread_of c
+    return unless c.thread
+    c.thread.drop c
+    @threads.delete_if { |k, v| v == c.thread } if c.thread.empty?
+    c.thread = nil
   end
-  private :update_threading_for
+  private :prune_thread_of
 
   def remove_id mid
     return unless(c = @messages[mid])
     remove_container c
+    prune_thread_of c
   end
 
   def remove_thread_containing_id mid