diff --git a/frontend/apps/reader/modules/readerfooter.lua b/frontend/apps/reader/modules/readerfooter.lua index c2bd669a0..3a9ac5cab 100644 --- a/frontend/apps/reader/modules/readerfooter.lua +++ b/frontend/apps/reader/modules/readerfooter.lua @@ -753,7 +753,7 @@ function ReaderFooter:updateFooterContainer() } self.footer_positioner = BottomContainer:new{ - dimen = Geom:new{}, + dimen = Geom:new(), self.footer_content, } self[1] = self.footer_positioner diff --git a/frontend/ui/geometry.lua b/frontend/ui/geometry.lua index 7c5d27197..792806bca 100644 --- a/frontend/ui/geometry.lua +++ b/frontend/ui/geometry.lua @@ -35,7 +35,12 @@ local Geom = { } function Geom:new(o) - if not o then o = {} end + if not o then + o = { + x = 0, y = 0, + w = 0, h = 0, + } + end setmetatable(o, self) self.__index = self return o diff --git a/frontend/ui/widget/configdialog.lua b/frontend/ui/widget/configdialog.lua index d4ff3bfa4..fa64f8d29 100644 --- a/frontend/ui/widget/configdialog.lua +++ b/frontend/ui/widget/configdialog.lua @@ -292,7 +292,7 @@ function ConfigOption:init() local name_text_max_width = name_widget_width local face = Font:getFace(name_font_face, name_font_size) local option_name_container = RightContainer:new{ - dimen = Geom:new{ w = name_widget_width, h = option_height}, + dimen = Geom:new{ w = name_widget_width, h = option_height }, } local option_name = Button:new{ text = name_text, @@ -828,7 +828,7 @@ function MenuBar:init() table.insert(menu_bar, spacing) table.insert(line_bar, spacing_line) - self.dimen = Geom:new{ w = Screen:getWidth(), h = bar_height} + self.dimen = Geom:new{ x = 0, y = 0, w = Screen:getWidth(), h = bar_height } local vertical_menu = VerticalGroup:new{ line_bar, menu_bar, diff --git a/frontend/ui/widget/container/widgetcontainer.lua b/frontend/ui/widget/container/widgetcontainer.lua index 6fb5d1edf..1387a5662 100644 --- a/frontend/ui/widget/container/widgetcontainer.lua +++ b/frontend/ui/widget/container/widgetcontainer.lua @@ -55,6 +55,7 @@ function WidgetContainer:paintTo(bb, x, y) self.dimen = Geom:new{x = 0, y = 0, w = content_size.w, h = content_size.h} end + -- NOTE: Clunky `or` left in on the off-chance we're passed a dimen that isn't a proper Geom object... x = x + (self.dimen.x or 0) y = y + (self.dimen.y or 0) if self.align == "top" then diff --git a/frontend/ui/widget/keyvaluepage.lua b/frontend/ui/widget/keyvaluepage.lua index 1f78ed08d..630be37ed 100644 --- a/frontend/ui/widget/keyvaluepage.lua +++ b/frontend/ui/widget/keyvaluepage.lua @@ -194,7 +194,7 @@ function KeyValueItem:init() HorizontalGroup:new{ dimen = content_dimen, LeftContainer:new{ - dimen = { + dimen = Geom:new{ w = key_w, h = content_dimen.h }, diff --git a/frontend/ui/widget/menu.lua b/frontend/ui/widget/menu.lua index 8fb9c33c4..ffc27a429 100644 --- a/frontend/ui/widget/menu.lua +++ b/frontend/ui/widget/menu.lua @@ -395,6 +395,7 @@ function MenuItem:init() vertical_align = "center", padding = 0, dimen = Geom:new{ + x = 0, y = 0, w = self.content_width, h = self.dimen.h }, @@ -633,6 +634,7 @@ function Menu:_recalculateDimen() local item_height = math.floor(height_dim / self.perpage) self.span_width = math.floor((height_dim - (self.perpage * item_height)) / 2 - 1) self.item_dimen = Geom:new{ + x = 0, y = 0, w = self.inner_dimen.w, h = item_height, } @@ -864,6 +866,7 @@ function Menu:init() dimen = self.inner_dimen:copy(), WidgetContainer:new{ dimen = Geom:new{ + x = 0, y = 0, w = self.screen_w, h = self.page_return_arrow:getSize().h, }, diff --git a/frontend/ui/widget/spinwidget.lua b/frontend/ui/widget/spinwidget.lua index 41a497207..b8df9748b 100644 --- a/frontend/ui/widget/spinwidget.lua +++ b/frontend/ui/widget/spinwidget.lua @@ -257,7 +257,7 @@ function SpinWidget:update(numberpicker_value, numberpicker_value_index) } self[1] = WidgetContainer:new{ align = "center", - dimen =Geom:new{ + dimen = Geom:new{ x = 0, y = 0, w = self.screen_width, h = self.screen_height, diff --git a/frontend/ui/widget/textboxwidget.lua b/frontend/ui/widget/textboxwidget.lua index d46234276..9f5ac062e 100644 --- a/frontend/ui/widget/textboxwidget.lua +++ b/frontend/ui/widget/textboxwidget.lua @@ -1012,7 +1012,7 @@ function TextBoxWidget:_renderImage(start_row_idx) margin = 0, padding = 0, RightContainer:new{ - dimen = { + dimen = Geom:new{ w = image.width, h = status_height, }, @@ -1189,7 +1189,7 @@ function TextBoxWidget:getSize() self:_updateLayout() end - return Geom:new{w = self.width, h = self._bb:getHeight()} + return Geom:new{x = 0, y = 0, w = self.width, h = self._bb:getHeight()} end function TextBoxWidget:paintTo(bb, x, y) diff --git a/plugins/coverbrowser.koplugin/listmenu.lua b/plugins/coverbrowser.koplugin/listmenu.lua index 210373321..92e3fef39 100644 --- a/plugins/coverbrowser.koplugin/listmenu.lua +++ b/plugins/coverbrowser.koplugin/listmenu.lua @@ -959,6 +959,7 @@ function ListMenu:_recalculateDimen() self.item_height = math.floor(available_height / self.perpage) - Size.line.thin self.item_width = self.inner_dimen.w self.item_dimen = Geom:new{ + x = 0, y = 0, w = self.item_width, h = self.item_height } diff --git a/plugins/coverbrowser.koplugin/mosaicmenu.lua b/plugins/coverbrowser.koplugin/mosaicmenu.lua index afb4a174e..c84425f17 100644 --- a/plugins/coverbrowser.koplugin/mosaicmenu.lua +++ b/plugins/coverbrowser.koplugin/mosaicmenu.lua @@ -419,6 +419,7 @@ function MosaicMenuItem:init() vertical_align = "top", padding = 0, dimen = Geom:new{ + x = 0, y = 0, w = self.width, h = self.height }, @@ -523,8 +524,8 @@ function MosaicMenuItem:update() radius = Screen:scaleBySize(10), OverlapGroup:new{ dimen = dimen_in, - CenterContainer:new{ dimen=dimen_in, directory}, - BottomContainer:new{ dimen=dimen_in, nbitems}, + CenterContainer:new{ dimen = dimen_in, directory}, + BottomContainer:new{ dimen = dimen_in, nbitems}, }, } else @@ -890,6 +891,7 @@ function MosaicMenu:_recalculateDimen() self.item_height = math.floor((self.inner_dimen.h - self.others_height - (1+self.nb_rows)*self.item_margin) / self.nb_rows) self.item_width = math.floor((self.inner_dimen.w - (1+self.nb_cols)*self.item_margin) / self.nb_cols) self.item_dimen = Geom:new{ + x = 0, y = 0, w = self.item_width, h = self.item_height } diff --git a/tools/wbuilder.lua b/tools/wbuilder.lua index 7f1105b2f..61442553a 100755 --- a/tools/wbuilder.lua +++ b/tools/wbuilder.lua @@ -139,7 +139,8 @@ Background = InputContainer:new{ bordersize = 0, dimen = Screen:getSize(), Widget:new{ - dimen = { + dimen = Geom:new{ + x = 0, y = 0, w = Screen:getWidth(), h = Screen:getHeight(), }