diff --git a/modules/corelib/ui/uiminiwindow.lua b/modules/corelib/ui/uiminiwindow.lua index 748f88b4..4d72f17e 100644 --- a/modules/corelib/ui/uiminiwindow.lua +++ b/modules/corelib/ui/uiminiwindow.lua @@ -37,6 +37,7 @@ function UIMiniWindow:minimize(dontSave) self:getChildById('miniwindowScrollBar'):hide() self:getChildById('bottomResizeBorder'):hide() self:getChildById('minimizeButton'):setOn(true) + self.maximizedHeight = self:getHeight() self:setHeight(self.minimizedHeight) if not dontSave then @@ -52,7 +53,7 @@ function UIMiniWindow:maximize(dontSave) self:getChildById('miniwindowScrollBar'):show() self:getChildById('bottomResizeBorder'):show() self:getChildById('minimizeButton'):setOn(false) - self:setHeight(self:getSettings('height')) + self:setHeight(self:getSettings('height') or self.maximizedHeight) if not dontSave then self:setSettings({minimized = false}) @@ -103,8 +104,12 @@ function UIMiniWindow:setup() if selfSettings.minimized then self:minimize(true) - elseif selfSettings.height then - self:setHeight(selfSettings.height) + else + if selfSettings.height and self:isResizeable() then + self:setHeight(selfSettings.height) + elseif selfSettings.height and not self:isResizeable() then + self:eraseSettings({height = true}) + end end if selfSettings.closed then @@ -221,11 +226,14 @@ function UIMiniWindow:onFocusChange(focused) end function UIMiniWindow:onHeightChange(height) - self:setSettings({height = height}) + if not self:isOn() then + self:setSettings({height = height}) + end self:fitOnParent() end function UIMiniWindow:getSettings(name) + if not self.save then return nil end local settings = g_settings.getNode('MiniWindows') if settings then local selfSettings = settings[self:getId()] @@ -256,6 +264,26 @@ function UIMiniWindow:setSettings(data) g_settings.setNode('MiniWindows', settings) end +function UIMiniWindow:eraseSettings(data) + if not self.save then return end + + local settings = g_settings.getNode('MiniWindows') + if not settings then + settings = {} + end + + local id = self:getId() + if not settings[id] then + settings[id] = {} + end + + for key,value in pairs(data) do + settings[id][key] = nil + end + + g_settings.setNode('MiniWindows', settings) +end + function UIMiniWindow:saveParent(parent) local parent = self:getParent() if parent then diff --git a/modules/corelib/ui/uiresizeborder.lua b/modules/corelib/ui/uiresizeborder.lua index 4a747499..71d49659 100644 --- a/modules/corelib/ui/uiresizeborder.lua +++ b/modules/corelib/ui/uiresizeborder.lua @@ -17,6 +17,12 @@ function UIResizeBorder:onSetup() end end +function UIResizeBorder:onDestroy() + if self.hovering then + g_mouse.restoreCursor() + end +end + function UIResizeBorder:onHoverChange(hovered) if hovered then if g_mouse.isCursorChanged() or g_mouse.isPressed() then return end