From 3fe09ecc016e67a3fe5143d1707f32518f931bb0 Mon Sep 17 00:00:00 2001 From: hius07 <62179190+hius07@users.noreply.github.com> Date: Fri, 1 Oct 2021 21:33:39 +0300 Subject: [PATCH] CenterContainer: options to handle larger content (#8277) --- .../ui/widget/container/centercontainer.lua | 18 +++++++++++++----- frontend/ui/widget/inputdialog.lua | 1 + frontend/ui/widget/keyboardlayoutdialog.lua | 3 ++- frontend/ui/widget/multiinputdialog.lua | 4 ++-- 4 files changed, 18 insertions(+), 8 deletions(-) diff --git a/frontend/ui/widget/container/centercontainer.lua b/frontend/ui/widget/container/centercontainer.lua index ac218a997..1836ef413 100644 --- a/frontend/ui/widget/container/centercontainer.lua +++ b/frontend/ui/widget/container/centercontainer.lua @@ -8,11 +8,19 @@ local CenterContainer = WidgetContainer:new() function CenterContainer:paintTo(bb, x, y) local content_size = self[1]:getSize() - --- @fixme - -- if content_size.w > self.dimen.w or content_size.h > self.dimen.h then - -- throw error? paint to scrap buffer and blit partially? - -- for now, we ignore this - -- end + + -- check if content is bigger than container + if self.ignore_if_over == "height" then -- align upper borders + if self.dimen.h < content_size.h then + self.ignore = "height" + end + end + if self.ignore_if_over == "width" then -- align left borders + if self.dimen.w < content_size.w then + self.ignore = "width" + end + end + local x_pos = x local y_pos = y if self.ignore ~= "height" then diff --git a/frontend/ui/widget/inputdialog.lua b/frontend/ui/widget/inputdialog.lua index 72bb94c97..81bdc6aeb 100644 --- a/frontend/ui/widget/inputdialog.lua +++ b/frontend/ui/widget/inputdialog.lua @@ -462,6 +462,7 @@ function InputDialog:init() w = self.screen_width, h = self.screen_height - keyboard_height, }, + ignore_if_over = "height", frame } if Device:isTouchDevice() then -- is used to hide the keyboard with a tap outside of inputbox diff --git a/frontend/ui/widget/keyboardlayoutdialog.lua b/frontend/ui/widget/keyboardlayoutdialog.lua index d43ea8a08..b1398159c 100644 --- a/frontend/ui/widget/keyboardlayoutdialog.lua +++ b/frontend/ui/widget/keyboardlayoutdialog.lua @@ -159,8 +159,9 @@ function KeyboardLayoutDialog:init() self[1] = CenterContainer:new{ dimen = Geom:new{ w = Screen:getWidth(), - h = math.max(Screen:getHeight(), self.dialog_frame:getSize().h), + h = Screen:getHeight(), }, + ignore_if_over = "height", self.movable, } end diff --git a/frontend/ui/widget/multiinputdialog.lua b/frontend/ui/widget/multiinputdialog.lua index 43198c97d..f9ebbad25 100644 --- a/frontend/ui/widget/multiinputdialog.lua +++ b/frontend/ui/widget/multiinputdialog.lua @@ -123,9 +123,9 @@ function MultiInputDialog:init() self[1] = CenterContainer:new{ dimen = Geom:new{ w = Screen:getWidth(), - h = math.max(Screen:getHeight() - self._input_widget:getKeyboardDimen().h, - self.dialog_frame:getSize().h), + h = Screen:getHeight() - self._input_widget:getKeyboardDimen().h, }, + ignore_if_over = "height", self.dialog_frame, } UIManager:setDirty(self, "ui")