diff --git a/plugins/lua/sort/info.lua b/plugins/lua/sort/info.lua index 318438cf1..4e75b2381 100644 --- a/plugins/lua/sort/info.lua +++ b/plugins/lua/sort/info.lua @@ -364,7 +364,7 @@ function InfoOverlay:get_key() end end -local function resize_overlay(self) +function resize_overlay(self) local sw = dfhack.screen.getWindowSize() local overlay_width = math.min(40, sw-(self.frame_rect.x1 + 30)) if overlay_width ~= self.frame.w then @@ -377,7 +377,7 @@ local function is_tabs_in_two_rows() return dfhack.screen.readTile(64, 6, false).ch == 0 end -local function get_panel_offsets() +function get_panel_offsets() local tabs_in_two_rows = is_tabs_in_two_rows() local shift_right = info.current_mode == df.info_interface_mode_type.ARTIFACTS or info.current_mode == df.info_interface_mode_type.LABOR @@ -386,7 +386,8 @@ local function get_panel_offsets() if tabs_in_two_rows then t_offset = shift_right and 0 or 3 end - if info.current_mode == df.info_interface_mode_type.JOBS then + if info.current_mode == df.info_interface_mode_type.JOBS or + info.current_mode == df.info_interface_mode_type.BUILDINGS then t_offset = t_offset - 1 end return l_offset, t_offset diff --git a/plugins/lua/sort/places.lua b/plugins/lua/sort/places.lua index 10f18b94c..326089b29 100644 --- a/plugins/lua/sort/places.lua +++ b/plugins/lua/sort/places.lua @@ -2,6 +2,7 @@ local _ENV = mkmodule('plugins.sort.places') local sortoverlay = require('plugins.sort.sortoverlay') local locationselector = require('plugins.sort.locationselector') +local info_overlay = require('plugins.sort.info') local widgets = require('gui.widgets') local utils = require('utils') @@ -124,6 +125,7 @@ PlacesOverlay.ATTRS{ function PlacesOverlay:init() self:addviews{ widgets.BannerPanel{ + view_id='panel', frame={l=0, t=0, r=0, h=1}, visible=self:callback('get_key'), subviews={ @@ -154,4 +156,24 @@ function PlacesOverlay:get_key() end end +function PlacesOverlay:updateFrames() + local ret = info_overlay.resize_overlay(self) + local l, t = info_overlay.get_panel_offsets() + local frame = self.subviews.panel.frame + if frame.l == l and frame.t == t then return ret end + frame.l, frame.t = l, t + local frame2 = self.subviews.subset_panel.frame + frame2.l, frame2.t = l, t + 1 + local frame3 = self.subviews.subfilter_panel.frame + frame3.l, frame3.t = l, t + 2 + return true +end + +function PlacesOverlay:onRenderBody(dc) + PlacesOverlay.super.onRenderBody(self, dc) + if self:updateFrames() then + self:updateLayout() + end +end + return _ENV