mirror of
https://github.com/Insality/druid.git
synced 2025-09-27 18:12:19 +02:00
Merge branch 'develop' into feature/77-grid-update
# Conflicts: # druid/base/grid.lua
This commit is contained in:
@@ -11,10 +11,11 @@
|
||||
-- @tfield[opt=node] node click_node Button trigger node
|
||||
-- @tfield druid.button button Button component from click_node
|
||||
|
||||
local const = require("druid.const")
|
||||
local Event = require("druid.event")
|
||||
local component = require("druid.component")
|
||||
|
||||
local M = component.create("checkbox")
|
||||
local M = component.create("checkbox", { const.ON_LAYOUT_CHANGE })
|
||||
|
||||
|
||||
local function on_click(self)
|
||||
@@ -53,15 +54,16 @@ function M.init(self, node, callback, click_node)
|
||||
end
|
||||
|
||||
|
||||
function M.on_layout_change(self)
|
||||
self:set_state(self.state, true)
|
||||
end
|
||||
|
||||
|
||||
--- Set checkbox state
|
||||
-- @function checkbox:set_state
|
||||
-- @tparam bool state Checkbox state
|
||||
-- @tparam bool is_silent Don't trigger on_change_state if true
|
||||
function M.set_state(self, state, is_silent)
|
||||
if self.state == state then
|
||||
return
|
||||
end
|
||||
|
||||
self.state = state
|
||||
self.style.on_change_state(self, self.node, state)
|
||||
|
||||
|
@@ -24,7 +24,7 @@ local Event = require("druid.event")
|
||||
local helper = require("druid.helper")
|
||||
local component = require("druid.component")
|
||||
|
||||
local M = component.create("grid")
|
||||
local M = component.create("grid", { const.ON_LAYOUT_CHANGE })
|
||||
|
||||
|
||||
--- Component init function
|
||||
@@ -123,6 +123,11 @@ function M.get_index(self, pos)
|
||||
end
|
||||
|
||||
|
||||
function M.on_layout_change(self)
|
||||
update_pos(self, true)
|
||||
end
|
||||
|
||||
|
||||
--- Set grid items offset, the distance between items
|
||||
-- @function grid:set_offset
|
||||
-- @tparam vector3 offset Offset
|
||||
|
@@ -65,7 +65,7 @@ end
|
||||
|
||||
|
||||
function M.on_input_interrupt(self)
|
||||
M.set_hover(self, false)
|
||||
self:set_hover(false)
|
||||
end
|
||||
|
||||
|
||||
@@ -109,10 +109,10 @@ function M.set_enabled(self, state)
|
||||
|
||||
if not state then
|
||||
if self._is_hovered then
|
||||
M.set_hover(false)
|
||||
self:set_hover(false)
|
||||
end
|
||||
if self._is_mouse_hovered then
|
||||
M.set_mouse_hover(false)
|
||||
self:set_mouse_hover(false)
|
||||
end
|
||||
end
|
||||
end
|
||||
|
@@ -26,6 +26,7 @@ local M = component.create("lang_text", { const.ON_LANGUAGE_CHANGE })
|
||||
function M.init(self, node, locale_id, no_adjust)
|
||||
self.druid = self:get_druid()
|
||||
self.text = self.druid:new_text(node, locale_id, no_adjust)
|
||||
self.last_locale_args = {}
|
||||
|
||||
self.on_change = Event()
|
||||
|
||||
@@ -37,7 +38,7 @@ end
|
||||
|
||||
function M.on_language_change(self)
|
||||
if self.last_locale then
|
||||
M.translate(self)
|
||||
M.translate(self, self.last_locale, unpack(self.last_locale_args))
|
||||
end
|
||||
end
|
||||
|
||||
@@ -55,9 +56,10 @@ end
|
||||
--- Translate the text by locale_id
|
||||
-- @function lang_text:translate
|
||||
-- @tparam string locale_id Locale id
|
||||
function M.translate(self, locale_id)
|
||||
function M.translate(self, locale_id, ...)
|
||||
self.last_locale_args = {...}
|
||||
self.last_locale = locale_id or self.last_locale
|
||||
self.text:set_to(settings.get_text(self.last_locale))
|
||||
self.text:set_to(settings.get_text(self.last_locale, ...))
|
||||
end
|
||||
|
||||
|
||||
|
@@ -20,7 +20,7 @@ local const = require("druid.const")
|
||||
local helper = require("druid.helper")
|
||||
local component = require("druid.component")
|
||||
|
||||
local M = component.create("progress", { const.ON_UPDATE })
|
||||
local M = component.create("progress", { const.ON_UPDATE, const.ON_LAYOUT_CHANGE })
|
||||
|
||||
|
||||
local function check_steps(self, from, to, exactly)
|
||||
@@ -106,6 +106,11 @@ function M.init(self, node, key, init_value)
|
||||
end
|
||||
|
||||
|
||||
function M.on_layout_change(self)
|
||||
self:set_to(self.last_value)
|
||||
end
|
||||
|
||||
|
||||
function M.update(self, dt)
|
||||
if self.target then
|
||||
local prev_value = self.last_value
|
||||
|
@@ -32,7 +32,7 @@ local const = require("druid.const")
|
||||
local helper = require("druid.helper")
|
||||
local component = require("druid.component")
|
||||
|
||||
local M = component.create("scroll", { const.ON_UPDATE })
|
||||
local M = component.create("scroll", { const.ON_UPDATE, const.ON_LAYOUT_CHANGE })
|
||||
|
||||
|
||||
local function inverse_lerp(min, max, current)
|
||||
@@ -376,6 +376,11 @@ function M.init(self, view_node, content_node)
|
||||
end
|
||||
|
||||
|
||||
function M.on_layout_change(self)
|
||||
gui.set_position(self.content_node, self.position)
|
||||
end
|
||||
|
||||
|
||||
function M.update(self, dt)
|
||||
if self.drag.is_drag then
|
||||
update_hand_scroll(self, dt)
|
||||
|
@@ -22,7 +22,7 @@ local helper = require("druid.helper")
|
||||
local const = require("druid.const")
|
||||
local component = require("druid.component")
|
||||
|
||||
local M = component.create("slider", { const.ON_INPUT_HIGH })
|
||||
local M = component.create("slider", { const.ON_INPUT_HIGH, const.ON_LAYOUT_CHANGE })
|
||||
|
||||
|
||||
local function on_change_value(self)
|
||||
@@ -59,6 +59,11 @@ function M.init(self, node, end_pos, callback)
|
||||
end
|
||||
|
||||
|
||||
function M.on_layout_change(self)
|
||||
self:set(self.value, true)
|
||||
end
|
||||
|
||||
|
||||
function M.on_input(self, action_id, action)
|
||||
if action_id ~= const.ACTION_TOUCH then
|
||||
return false
|
||||
|
@@ -24,7 +24,7 @@ local Event = require("druid.event")
|
||||
local const = require("druid.const")
|
||||
local component = require("druid.component")
|
||||
|
||||
local M = component.create("text")
|
||||
local M = component.create("text", { const.ON_LAYOUT_CHANGE })
|
||||
|
||||
|
||||
local function update_text_size(self)
|
||||
@@ -107,6 +107,11 @@ function M.init(self, node, value, no_adjust)
|
||||
end
|
||||
|
||||
|
||||
function M.on_layout_change(self)
|
||||
self:set_to(self.last_value)
|
||||
end
|
||||
|
||||
|
||||
--- Calculate text width with font with respect to trailing space
|
||||
-- @function text:get_text_width
|
||||
-- @tparam[opt] string text
|
||||
|
@@ -33,7 +33,7 @@ M.ON_MESSAGE = hash("on_message")
|
||||
M.ON_INPUT_HIGH = hash("on_input_high")
|
||||
M.ON_FOCUS_LOST = hash("on_focus_lost")
|
||||
M.ON_FOCUS_GAINED = hash("on_focus_gained")
|
||||
M.ON_LAYOUT_CHANGE = hash("on_layout_change")
|
||||
M.ON_LAYOUT_CHANGE = hash("layout_changed")
|
||||
M.ON_LANGUAGE_CHANGE = hash("on_language_change")
|
||||
|
||||
|
||||
@@ -63,6 +63,7 @@ M.PIVOTS = {
|
||||
}
|
||||
|
||||
|
||||
-- Value is method name of component
|
||||
M.SPECIFIC_UI_MESSAGES = {
|
||||
[M.ON_FOCUS_LOST] = "on_focus_lost",
|
||||
[M.ON_FOCUS_GAINED] = "on_focus_gained",
|
||||
|
@@ -135,6 +135,8 @@ function Druid.initialize(self, context, style)
|
||||
self._context = context
|
||||
self._style = style or settings.default_style
|
||||
self._deleted = false
|
||||
self._is_input_processing = false
|
||||
self._late_remove = {}
|
||||
self.url = msg.url()
|
||||
|
||||
self.components = {}
|
||||
@@ -182,10 +184,15 @@ end
|
||||
-- @function druid:remove
|
||||
-- @tparam Component component Component instance
|
||||
function Druid.remove(self, component)
|
||||
if self._is_input_processing then
|
||||
table.insert(self._late_remove, component)
|
||||
return
|
||||
end
|
||||
|
||||
local all_components = self.components[const.ALL]
|
||||
|
||||
-- Recursive remove all children of component
|
||||
for i = 1, #all_components do
|
||||
for i = #all_components, 1, -1 do
|
||||
local inst = all_components[i]
|
||||
if inst:is_child_of(component) then
|
||||
self:remove(inst)
|
||||
@@ -197,7 +204,7 @@ function Druid.remove(self, component)
|
||||
if component.on_remove then
|
||||
component:on_remove()
|
||||
end
|
||||
table.remove(self, i)
|
||||
table.remove(all_components, i)
|
||||
end
|
||||
end
|
||||
|
||||
@@ -230,6 +237,8 @@ end
|
||||
-- @tparam hash action_id Action_id from on_input
|
||||
-- @tparam table action Action from on_input
|
||||
function Druid.on_input(self, action_id, action)
|
||||
self._is_input_processing = true
|
||||
|
||||
local is_input_consumed = false
|
||||
|
||||
is_input_consumed = process_input(action_id, action,
|
||||
@@ -238,6 +247,15 @@ function Druid.on_input(self, action_id, action)
|
||||
is_input_consumed = process_input(action_id, action,
|
||||
self.components[const.ON_INPUT], is_input_consumed)
|
||||
|
||||
self._is_input_processing = false
|
||||
|
||||
if #self._late_remove > 0 then
|
||||
for i = 1, #self._late_remove do
|
||||
self:remove(self._late_remove[i])
|
||||
end
|
||||
self._late_remove = {}
|
||||
end
|
||||
|
||||
return is_input_consumed
|
||||
end
|
||||
|
||||
|
@@ -6,7 +6,8 @@ local M = {}
|
||||
|
||||
M.default_style = nil
|
||||
|
||||
function M.get_text(name)
|
||||
|
||||
function M.get_text(name, ...)
|
||||
return "[Druid]: locales not inited"
|
||||
end
|
||||
|
||||
|
Reference in New Issue
Block a user