]> git.cworth.org Git - sup/blobdiff - lib/sup/buffer.rb
maybe fix disappearign status lines when a #say and an #ask are both active
[sup] / lib / sup / buffer.rb
index 277bc3efa229454757687588a3b15b730fdea357..b2106718f21a57ec3ad0b27d39c716dedf90e2d7 100644 (file)
@@ -155,7 +155,8 @@ class BufferManager
   def buffers; @name_map.to_a; end
 
   def focus_on buf
-    raise ArgumentError, "buffer not on stack: #{buf.inspect}" unless @buffers.member? buf
+    return unless @buffers.member? buf
+
     return if buf == @focus_buf 
     @focus_buf.blur if @focus_buf
     @focus_buf = buf
@@ -163,7 +164,7 @@ class BufferManager
   end
 
   def raise_to_front buf
-    raise ArgumentError, "buffer not on stack: #{buf.inspect}" unless @buffers.member? buf
+    return unless @buffers.member? buf
 
     @buffers.delete buf
     if @buffers.length > 0 && @buffers.last.force_to_top?
@@ -258,11 +259,12 @@ class BufferManager
   def spawn_unless_exists title, opts={}
     if @name_map.member? title
       raise_to_front @name_map[title] unless opts[:hidden]
+      nil
     else
       mode = yield
       spawn title, mode, opts
+      @name_map[title]
     end
-    @name_map[title]
   end
 
   def spawn title, mode, opts={}
@@ -345,7 +347,9 @@ class BufferManager
       ## TODO: something intelligent here
       ## for now I will simply prohibit killing the inbox buffer.
     else
-      raise_to_front @buffers.last
+      last = @buffers.last
+      @focus_buf ||= last
+      raise_to_front last
     end
   end
 
@@ -471,7 +475,8 @@ class BufferManager
     Ncurses.sync do
       tf.activate question, default, &block
       @dirty = true
-      draw_screen :skip_minibuf => true, :sync => false
+      #draw_screen :skip_minibuf => true, :sync => false
+      draw_screen :sync => false
     end
 
     ret = nil