fixes
This commit is contained in:
@@ -106,7 +106,7 @@ module BBS
|
|||||||
double: { tl: '╔', tr: '╗', bl: '╚', br: '╝', h: '═', v: '║' },
|
double: { tl: '╔', tr: '╗', bl: '╚', br: '╝', h: '═', v: '║' },
|
||||||
}.freeze
|
}.freeze
|
||||||
|
|
||||||
def box(x:, y:, width:, height:, sgr: nil, fill_sgr: nil, style: :single, title: nil, title_sgr: nil)
|
def box(x:, y:, width:, height:, sgr: nil, fill_sgr: nil, style: :single, title: nil, title_sgr: nil, title_indent: 0)
|
||||||
return if width < 2 || height < 2
|
return if width < 2 || height < 2
|
||||||
g = BOX_CHARS[style] || BOX_CHARS[:single]
|
g = BOX_CHARS[style] || BOX_CHARS[:single]
|
||||||
iw = width - 2
|
iw = width - 2
|
||||||
@@ -114,11 +114,14 @@ module BBS
|
|||||||
move(x, y)
|
move(x, y)
|
||||||
write(g[:tl], sgr: sgr)
|
write(g[:tl], sgr: sgr)
|
||||||
if title && title.length > 0
|
if title && title.length > 0
|
||||||
clipped = title[0, [iw - 2, 0].max]
|
indent = [title_indent, 0].max
|
||||||
|
title_max = [iw - 2 - indent, 0].max
|
||||||
|
clipped = title[0, title_max]
|
||||||
|
write(g[:h] * indent, sgr: sgr) if indent > 0
|
||||||
prefix = "#{g[:h]} "
|
prefix = "#{g[:h]} "
|
||||||
write(prefix, sgr: sgr)
|
write(prefix, sgr: sgr)
|
||||||
write(clipped, sgr: title_sgr || sgr)
|
write(clipped, sgr: title_sgr || sgr)
|
||||||
rest = iw - prefix.length - clipped.length
|
rest = iw - indent - prefix.length - clipped.length
|
||||||
write(g[:h] * [rest, 0].max, sgr: sgr) if rest > 0
|
write(g[:h] * [rest, 0].max, sgr: sgr) if rest > 0
|
||||||
else
|
else
|
||||||
write(g[:h] * iw, sgr: sgr)
|
write(g[:h] * iw, sgr: sgr)
|
||||||
|
|||||||
@@ -34,14 +34,16 @@ module BBS
|
|||||||
frame.shadow(x: bounds.x, y: bounds.y, width: bounds.width,
|
frame.shadow(x: bounds.x, y: bounds.y, width: bounds.width,
|
||||||
height: bounds.height, sgr: style(:window_shadow))
|
height: bounds.height, sgr: style(:window_shadow))
|
||||||
end
|
end
|
||||||
|
show_close = @on_close != false && bounds.width >= 6
|
||||||
frame.box(
|
frame.box(
|
||||||
x: bounds.x, y: bounds.y, width: bounds.width, height: bounds.height,
|
x: bounds.x, y: bounds.y, width: bounds.width, height: bounds.height,
|
||||||
sgr: style(:window_border), fill_sgr: style(:window_bg),
|
sgr: style(:window_border), fill_sgr: style(:window_bg),
|
||||||
style: :double, title: @title,
|
style: :double, title: @title,
|
||||||
title_sgr: focused ? style(:window_title_focused) : style(:window_title)
|
title_sgr: focused ? style(:window_title_focused) : style(:window_title),
|
||||||
|
title_indent: show_close ? 4 : 0
|
||||||
)
|
)
|
||||||
# Close gadget — Turbo Vision style "[■]"
|
# Close gadget — Turbo Vision style "[■]"
|
||||||
if @on_close != false && bounds.width >= 6
|
if show_close
|
||||||
frame.move(bounds.x + 2, bounds.y)
|
frame.move(bounds.x + 2, bounds.y)
|
||||||
frame.write('[■]', sgr: style(:window_title))
|
frame.write('[■]', sgr: style(:window_title))
|
||||||
end
|
end
|
||||||
|
|||||||
Reference in New Issue
Block a user