diff options
author | Ricardo Constantino <wiiaboo@gmail.com> | 2017-04-15 18:06:57 +0100 |
---|---|---|
committer | Ricardo Constantino <wiiaboo@gmail.com> | 2017-04-19 20:18:23 +0100 |
commit | e870b7ad666d776eb3bc4fee93fb3c654dd3bba1 (patch) | |
tree | 0d0360ab4a46f61f4827ae32eab802990bd90b3d /player | |
parent | 82bf4567f9da29f476a4706850aebdb69f122db6 (diff) |
osc: simplify checks in key handler
Use a helper function for these safety checks.
Diffstat (limited to 'player')
-rw-r--r-- | player/lua/osc.lua | 55 |
1 files changed, 25 insertions, 30 deletions
diff --git a/player/lua/osc.lua b/player/lua/osc.lua index df38141707..fe51c511e1 100644 --- a/player/lua/osc.lua +++ b/player/lua/osc.lua @@ -2045,24 +2045,29 @@ end -- Eventhandling -- +local function element_has_action(element, action) + return element and element.eventresponder and + element.eventresponder[action] +end + function process_event(source, what) + local action = string.format("%s%s", source, + what and ("_" .. what) or "") if what == "down" then for n = 1, #elements do - if not (elements[n].eventresponder == nil) then - if not (elements[n].eventresponder[source .. "_up"] == nil) - or not (elements[n].eventresponder[source .. "_down"] == nil) then + if mouse_hit(elements[n]) and + elements[n].eventresponder and + (elements[n].eventresponder[source .. "_up"] or + elements[n].eventresponder[action]) then - if mouse_hit(elements[n]) then - state.active_element = n - state.active_event_source = source - -- fire the down event if the element has one - if not (elements[n].eventresponder[source .. "_" .. what] == nil) then - elements[n].eventresponder[source .. "_" .. what](elements[n]) - end - end + state.active_element = n + state.active_event_source = source + -- fire the down event if the element has one + if element_has_action(elements[n], action) then + elements[n].eventresponder[action](elements[n]) end end @@ -2070,24 +2075,19 @@ function process_event(source, what) elseif what == "up" then - if not (state.active_element == nil) then - + if elements[state.active_element] then local n = state.active_element if n == 0 then --click on background (does not work) - elseif n > 0 and not (n > #elements) and - not (elements[n].eventresponder == nil) and - not (elements[n].eventresponder[source .. "_" .. what] == nil) then + elseif element_has_action(elements[n], action) and + mouse_hit(elements[n]) then - if mouse_hit(elements[n]) then - elements[n].eventresponder[source .. "_" .. what](elements[n]) - end + elements[n].eventresponder[action](elements[n]) end --reset active element - if not (n > #elements) and elements[n].eventresponder ~= nil and - elements[n].eventresponder["reset"] ~= nil then + if element_has_action(elements[n], "reset") then elements[n].eventresponder["reset"](elements[n]) end @@ -2096,6 +2096,7 @@ function process_event(source, what) state.mouse_down_counter = 0 elseif source == "mouse_move" then + local mouseX, mouseY = get_virt_mouse_pos() if (user_opts.minmousemove == 0) or (not ((state.last_mouseX == nil) or (state.last_mouseY == nil)) and @@ -2107,15 +2108,9 @@ function process_event(source, what) end state.last_mouseX, state.last_mouseY = mouseX, mouseY - if not (state.active_element == nil) then - - local n = state.active_element - - if not (n > #elements) and not (elements[n].eventresponder == nil) then - if not (elements[n].eventresponder[source] == nil) then - elements[n].eventresponder[source](elements[n]) - end - end + local n = state.active_element + if element_has_action(elements[n], action) then + elements[n].eventresponder[action](elements[n]) end tick() end |