SpinWidgets: keep movable position/alpha after Apply

Since eda8379e8c, on Apply, the widget is fully rebuild,
and was repositionned at its initial position (centered)
and fully opaque.
reviewable/pr8944/r8^2
poire-z 2 years ago
parent 814f42cce0
commit 658991ed5e

@ -86,6 +86,8 @@ function DoubleSpinWidget:init()
end end
function DoubleSpinWidget:update(numberpicker_left_value, numberpicker_right_value) function DoubleSpinWidget:update(numberpicker_left_value, numberpicker_right_value)
local prev_movable_offset = self.movable and self.movable:getMovedOffset()
local prev_movable_alpha = self.movable and self.movable.alpha
self.layout = {} self.layout = {}
local left_widget = NumberPickerWidget:new{ local left_widget = NumberPickerWidget:new{
show_parent = self, show_parent = self,
@ -256,6 +258,7 @@ function DoubleSpinWidget:update(numberpicker_left_value, numberpicker_right_val
} }
} }
self.movable = MovableContainer:new{ self.movable = MovableContainer:new{
alpha = prev_movable_alpha,
self.widget_frame, self.widget_frame,
} }
self[1] = WidgetContainer:new{ self[1] = WidgetContainer:new{
@ -267,6 +270,9 @@ function DoubleSpinWidget:update(numberpicker_left_value, numberpicker_right_val
}, },
self.movable, self.movable,
} }
if prev_movable_offset then
self.movable:setMovedOffset(prev_movable_offset)
end
self:refocusWidget() self:refocusWidget()
UIManager:setDirty(self, function() UIManager:setDirty(self, function()
return "ui", self.widget_frame.dimen return "ui", self.widget_frame.dimen

@ -85,6 +85,8 @@ function SpinWidget:init()
end end
function SpinWidget:update(numberpicker_value, numberpicker_value_index) function SpinWidget:update(numberpicker_value, numberpicker_value_index)
local prev_movable_offset = self.movable and self.movable:getMovedOffset()
local prev_movable_alpha = self.movable and self.movable.alpha
self.layout = {} self.layout = {}
local value_widget = NumberPickerWidget:new{ local value_widget = NumberPickerWidget:new{
show_parent = self, show_parent = self,
@ -223,6 +225,7 @@ function SpinWidget:update(numberpicker_value, numberpicker_value_index)
vgroup, vgroup,
} }
self.movable = MovableContainer:new{ self.movable = MovableContainer:new{
alpha = prev_movable_alpha,
self.spin_frame, self.spin_frame,
} }
self[1] = WidgetContainer:new{ self[1] = WidgetContainer:new{
@ -234,6 +237,9 @@ function SpinWidget:update(numberpicker_value, numberpicker_value_index)
}, },
self.movable, self.movable,
} }
if prev_movable_offset then
self.movable:setMovedOffset(prev_movable_offset)
end
self:refocusWidget() self:refocusWidget()
UIManager:setDirty(self, function() UIManager:setDirty(self, function()
return "ui", self.spin_frame.dimen return "ui", self.spin_frame.dimen

Loading…
Cancel
Save