@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
@textfields = {}
@flash = nil
@shelled = @asking = false
+ @in_x = ENV["TERM"] =~ /(xterm|rxvt|screen)/
self.class.i_am_the_instance self
end
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
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