PageBrowser: smaller margins if no thumbnail page numbers

Also fix possibly unbalanced left and right margins.
reviewable/pr10544/r1
poire-z 12 months ago
parent 38bb4a1983
commit fa68c1e488

@ -261,21 +261,32 @@ function PageBrowserWidget:updateLayout()
self.nb_rows = 2
end
self.nb_grid_items = self.nb_rows * self.nb_cols
self.thumbnails_pagenums = self.ui.doc_settings:readSetting("page_browser_thumbnails_pagenums")
or G_reader_settings:readSetting("page_browser_thumbnails_pagenums") or 2
-- Set our items target size
-- Borders may eat into the margin, and the horizontal margin should be able to contain the page number
-- (let's use this computed margin also vertically)
self.grid_item_margin = self.page_num_width + Size.padding.small + Size.border.thick + Size.border.thin
self.grid_item_height = math.floor((self.grid_height - (self.nb_rows)*self.grid_item_margin) / self.nb_rows) -- no need for top margin, title bottom padding is enough
self.grid_item_width = math.floor((self.grid_width - (1+self.nb_cols)*self.grid_item_margin) / self.nb_cols)
local grid_item_default_margin = Screen:scaleBySize(10)
local grid_item_pagenum_margin = self.page_num_width + Size.padding.small + Size.border.thick + Size.border.thin
local grid_item_inner_h_margin = grid_item_default_margin
local grid_item_outer_h_margin = grid_item_default_margin
if self.thumbnails_pagenums == 1 then
grid_item_outer_h_margin = grid_item_pagenum_margin
elseif self.thumbnails_pagenums == 2 then
grid_item_outer_h_margin = grid_item_pagenum_margin
grid_item_inner_h_margin = grid_item_pagenum_margin
end
self.grid_item_height = math.floor((self.grid_height - self.nb_rows*grid_item_default_margin) / self.nb_rows) -- no need for top margin, title bottom padding is enough
self.grid_item_width = math.floor((self.grid_width - 2*grid_item_outer_h_margin - (self.nb_cols-1)*grid_item_inner_h_margin) / self.nb_cols)
self.grid_item_dimen = Geom:new{
w = self.grid_item_width,
h = self.grid_item_height
}
-- Put any pixel left ouf by the flooring into grid_item_outer_h_margin, so everything looks balanced horizontally
grid_item_outer_h_margin = math.floor((self.grid_width - self.nb_cols * self.grid_item_width - (self.nb_cols-1)*grid_item_inner_h_margin) / 2)
self.grid:clear()
self.thumbnails_pagenums = self.ui.doc_settings:readSetting("page_browser_thumbnails_pagenums")
or G_reader_settings:readSetting("page_browser_thumbnails_pagenums") or 2
for idx = 1, self.nb_grid_items do
local row = math.floor((idx-1)/self.nb_cols) -- start from 0
local col = (idx-1) % self.nb_cols
@ -288,8 +299,8 @@ function PageBrowserWidget:updateLayout()
if BD.mirroredUILayout() then
col = self.nb_cols - col - 1
end
local offset_x = self.grid_item_margin*(col+1) + self.grid_item_width*col
local offset_y = self.grid_item_margin*(row) + self.grid_item_height*row -- no need for 1st margin
local offset_x = grid_item_outer_h_margin + grid_item_inner_h_margin*col + self.grid_item_width*col
local offset_y = grid_item_default_margin*row + self.grid_item_height*row -- no need for 1st margin
local grid_item = CenterContainer:new{
dimen = self.grid_item_dimen:copy(),
}

Loading…
Cancel
Save