Slightly prettier virtual keyboard (#4776)

Add a thin border around keys (square)
pull/4785/head
NiLuJe 5 years ago committed by Frans de Jonge
parent 80d7d1a530
commit 930286d3f5

@ -1 +1 @@
Subproject commit 1b146e7234c787d6c779bd8b42c0a85cb8dc9323 Subproject commit c61b0d40b87ce5729947f832cd598490c07b258e

@ -28,6 +28,7 @@ local FrameContainer = WidgetContainer:new{
color = Blitbuffer.COLOR_BLACK, color = Blitbuffer.COLOR_BLACK,
margin = 0, margin = 0,
radius = 0, radius = 0,
inner_bordersize = 0,
bordersize = Size.border.window, bordersize = Size.border.window,
padding = Size.padding.default, padding = Size.padding.default,
padding_top = nil, padding_top = nil,
@ -67,6 +68,13 @@ function FrameContainer:paintTo(bb, x, y)
container_width, container_height, container_width, container_height,
self.background, self.radius) self.background, self.radius)
end end
if self.inner_bordersize > 0 then
-- NOTE: This doesn't actually support radius, it'll always be a square.
bb:paintInnerBorder(x + self.margin, y + self.margin,
container_width - self.margin * 2,
container_height - self.margin * 2,
self.inner_bordersize, self.color, self.radius)
end
if self.bordersize > 0 then if self.bordersize > 0 then
bb:paintBorder(x + self.margin, y + self.margin, bb:paintBorder(x + self.margin, y + self.margin,
container_width - self.margin * 2, container_width - self.margin * 2,

@ -33,7 +33,9 @@ local VirtualKey = InputContainer:new{
width = nil, width = nil,
height = math.max(Screen:getWidth(), Screen:getHeight())*0.33, height = math.max(Screen:getWidth(), Screen:getHeight())*0.33,
bordersize = Size.border.default, bordersize = Size.border.thin,
focused_bordersize = Size.border.default * 5,
radius = 0,
face = Font:getFace("infont"), face = Font:getFace("infont"),
} }
@ -87,7 +89,7 @@ function VirtualKey:init()
margin = 0, margin = 0,
bordersize = self.bordersize, bordersize = self.bordersize,
background = Blitbuffer.COLOR_WHITE, background = Blitbuffer.COLOR_WHITE,
radius = Size.radius.window, radius = 0,
padding = 0, padding = 0,
CenterContainer:new{ CenterContainer:new{
dimen = Geom:new{ dimen = Geom:new{
@ -143,16 +145,16 @@ function VirtualKey:update_keyboard(want_flash, want_fast)
end end
function VirtualKey:onFocus() function VirtualKey:onFocus()
self[1].invert = true self[1].inner_bordersize = self.focused_bordersize
end end
function VirtualKey:onUnfocus() function VirtualKey:onUnfocus()
self[1].invert = false self[1].inner_bordersize = 0
end end
function VirtualKey:onTapSelect() function VirtualKey:onTapSelect()
if self.flash_keyboard and not self.skiptap then if self.flash_keyboard and not self.skiptap then
self[1].invert = true self[1].inner_bordersize = self.focused_bordersize
self:update_keyboard(false, true) self:update_keyboard(false, true)
if self.callback then if self.callback then
self.callback() self.callback()
@ -168,7 +170,7 @@ end
function VirtualKey:onHoldSelect() function VirtualKey:onHoldSelect()
if self.flash_keyboard and not self.skiphold then if self.flash_keyboard and not self.skiphold then
self[1].invert = true self[1].inner_bordersize = self.focused_bordersize
self:update_keyboard(false, true) self:update_keyboard(false, true)
if self.hold_callback then if self.hold_callback then
self.hold_callback() self.hold_callback()
@ -183,7 +185,11 @@ function VirtualKey:onHoldSelect()
end end
function VirtualKey:invert(invert, hold) function VirtualKey:invert(invert, hold)
self[1].invert = invert if invert then
self[1].inner_bordersize = self.focused_bordersize
else
self[1].inner_bordersize = 0
end
self:update_keyboard(hold, false) self:update_keyboard(hold, false)
end end
@ -333,14 +339,14 @@ function VirtualKeyboard:addKeys()
local keyboard_frame = FrameContainer:new{ local keyboard_frame = FrameContainer:new{
margin = 0, margin = 0,
bordersize = self.bordersize, bordersize = Size.border.default,
background = Blitbuffer.COLOR_WHITE, background = Blitbuffer.COLOR_WHITE,
radius = 0, radius = 0,
padding = self.padding, padding = self.padding,
CenterContainer:new{ CenterContainer:new{
dimen = Geom:new{ dimen = Geom:new{
w = self.width - 2*self.bordersize -2*self.padding, w = self.width - 2*Size.border.default - 2*self.padding,
h = self.height - 2*self.bordersize -2*self.padding, h = self.height - 2*Size.border.default - 2*self.padding,
}, },
vertical_group, vertical_group,
} }

Loading…
Cancel
Save