diff --git a/modules/corelib/ui/uiminiwindow.lua b/modules/corelib/ui/uiminiwindow.lua index d7ef8634..7e11f8f3 100644 --- a/modules/corelib/ui/uiminiwindow.lua +++ b/modules/corelib/ui/uiminiwindow.lua @@ -37,7 +37,6 @@ function UIMiniWindow:minimize(dontSave) self:getChildById('miniwindowScrollBar'):hide() self:getChildById('bottomResizeBorder'):hide() self:getChildById('minimizeButton'):setOn(true) - self.savedHeight = self:getHeight() self:setHeight(self.minimizedHeight) if not dontSave then @@ -53,12 +52,17 @@ function UIMiniWindow:maximize(dontSave) self:getChildById('miniwindowScrollBar'):show() self:getChildById('bottomResizeBorder'):show() self:getChildById('minimizeButton'):setOn(false) - self:setHeight(self.savedHeight) + self:setHeight(self:getSettings('height')) if not dontSave then self:setSettings({minimized = false}) end + local parent = self:getParent() + if parent and parent:getClassName() == 'UIMiniWindowContainer' then + parent:fitAll(self) + end + signalcall(self.onMaximize, self) end @@ -88,7 +92,6 @@ function UIMiniWindow:onSetup() if parent then if parent:getClassName() == 'UIMiniWindowContainer' and selfSettings.index and parent:isOn() then self.miniIndex = selfSettings.index - --addEvent(function() parent:scheduleInsert(self, selfSettings.index) end) parent:scheduleInsert(self, selfSettings.index) elseif selfSettings.position then self:setParent(parent) @@ -100,15 +103,13 @@ function UIMiniWindow:onSetup() if selfSettings.minimized then self:minimize(true) + elseif selfSettings.height then + self:setHeight(selfSettings.height) end if selfSettings.closed then self:close(true) end - - if selfSettings.height then - self:setHeight(selfSettings.height) - end end end @@ -233,6 +234,17 @@ function UIMiniWindow:onHeightChange(height) end end +function UIMiniWindow:getSettings(name) + local settings = g_settings.getNode('MiniWindows') + if settings then + local selfSettings = settings[self:getId()] + if selfSettings then + return selfSettings[name] + end + end + return nil +end + function UIMiniWindow:setSettings(data) if not self.save then return end @@ -286,7 +298,9 @@ end function UIMiniWindow:setContentHeight(height) local contentsPanel = self:getChildById('contentsPanel') local minHeight = contentsPanel:getMarginTop() + contentsPanel:getMarginBottom() + contentsPanel:getPaddingTop() + contentsPanel:getPaddingBottom() - self:setHeight(minHeight + height) + + local resizeBorder = self:getChildById('bottomResizeBorder') + resizeBorder:setParentSize(minHeight + height) end function UIMiniWindow:setContentMinimumHeight(height) diff --git a/modules/corelib/ui/uiminiwindowcontainer.lua b/modules/corelib/ui/uiminiwindowcontainer.lua index 1671c9ac..13f27c75 100644 --- a/modules/corelib/ui/uiminiwindowcontainer.lua +++ b/modules/corelib/ui/uiminiwindowcontainer.lua @@ -40,6 +40,7 @@ function UIMiniWindowContainer:fitAll(noRemoveChild) addEvent(function() noRemoveChild:setHeight(maximumHeight) end) end + -- TODO: most likely, minimum and maximum size are not set yet, so code above might not work properly. onSetup event -- TODO: try to resize another widget? -- TODO: try to find another panel? diff --git a/modules/corelib/ui/uiresizeborder.lua b/modules/corelib/ui/uiresizeborder.lua index d370f347..50f33e7c 100644 --- a/modules/corelib/ui/uiresizeborder.lua +++ b/modules/corelib/ui/uiresizeborder.lua @@ -9,6 +9,14 @@ function UIResizeBorder.create() return resizeborder end +function UIResizeBorder:onSetup() + if self:getWidth() > self:getHeight() then + self.vertical = true + else + self.vertical = false + end +end + function UIResizeBorder:onHoverChange(hovered) if hovered then if g_mouse.isCursorChanged() or g_mouse.isPressed() then return end @@ -34,19 +42,21 @@ end function UIResizeBorder:onMouseMove(mousePos, mouseMoved) if self:isPressed() then + local parent = self:getParent() + local newSize = 0 if self.vertical then local delta = mousePos.y - self:getY() - self:getHeight()/2 - local parent = self:getParent() - local newSize = math.min(math.max(parent:getHeight() + delta, self.minimum), self.maximum) + newSize = math.min(math.max(parent:getHeight() + delta, self.minimum), self.maximum) parent:setHeight(newSize) signalcall(parent.onHeightChange, parent, newSize) else local delta = mousePos.x - self:getX() - self:getWidth()/2 - local parent = self:getParent() - local newSize = math.min(math.max(parent:getWidth() + delta, self.minimum), self.maximum) + newSize = math.min(math.max(parent:getWidth() + delta, self.minimum), self.maximum) parent:setWidth(newSize) signalcall(parent.onWidthChange, parent, newSize) end + + self:checkBoundary(newSize) return true end end @@ -76,28 +86,42 @@ function UIResizeBorder:onVisibilityChange(visible) end function UIResizeBorder:setMaximum(maximum) - self.maximum = maximum - if self.maximum == self.minimum then - self:hide() - end - - local parent = self:getParent() - if self:isVisible() and parent:getHeight() > maximum then - parent:setHeight(maximum) - end + self.maximum = maximum + self:checkBoundary() end function UIResizeBorder:setMinimum(minimum) self.minimum = minimum - if self.maximum == self.minimum then - self:hide() + self:checkBoundary() +end + +function UIResizeBorder:getMaximum() return self.maximum end +function UIResizeBorder:getMinimum() return self.minimum end + +function UIResizeBorder:setParentSize(size) + local parent = self:getParent() + if self.vertical then + parent:setHeight(size) + else + parent:setWidth(size) end + self:checkBoundary(size) +end +function UIResizeBorder:getParentSize() local parent = self:getParent() - if self:isVisible() and parent:getHeight() < minimum then - parent:setHeight(minimum) + if self.vertical then + return parent:getHeight() + else + return parent:getWidth() end end -function UIResizeBorder:getMaximum() return self.maximum end -function UIResizeBorder:getMinimum() return self.minimum end +function UIResizeBorder:checkBoundary(size) + size = size or self:getParentSize() + if self.maximum == self.minimum and size == self.maximum then + self:hide() + else + self:show() + end +end diff --git a/modules/gamelib/protocollogin.lua b/modules/gamelib/protocollogin.lua index d459d90e..9c2d9764 100644 --- a/modules/gamelib/protocollogin.lua +++ b/modules/gamelib/protocollogin.lua @@ -7,10 +7,6 @@ LoginServerUpdateNeeded = 30 LoginServerCharacterList = 100 function ProtocolLogin:login(host, port, accountName, accountPassword) - if string.len(accountName) == 0 or string.len(accountPassword) == 0 then - signalcall(self.onError, self, tr("You must enter an account name and password.")) - return - end if string.len(host) == 0 or port == nil or port == 0 then signalcall(self.onError, self, tr("You must enter a valid server address and port.")) return