[lua] Disable 'beforesitechange' event (#4569, #4780, #4785)

This commit is contained in:
David Capello 2024-11-19 21:13:37 -03:00
parent 41baef2627
commit b03dffb5cd
2 changed files with 7 additions and 21 deletions

View File

@ -1,5 +1,5 @@
// Aseprite
// Copyright (C) 2021-2023 Igara Studio S.A.
// Copyright (C) 2021-2024 Igara Studio S.A.
//
// This program is distributed under the terms of
// the End-User License Agreement for Aseprite.
@ -34,10 +34,13 @@
#include <map>
#include <memory>
// This event was disabled temporarily until we debug some cases.
//#define ENABLE_BEFORE_SITE_CHANGE_EVENT 1
// This event was disabled because it can be triggered in a background thread
// when any effect (e.g. like Replace Color or Convolution Matrix) is running.
// And running script code in a background is not supported.
//#define ENABLE_REMAP_TILESET_EVENT
//#define ENABLE_REMAP_TILESET_EVENT 1
namespace app {
namespace script {
@ -173,8 +176,10 @@ public:
EventType eventType(const char* eventName) const override {
if (std::strcmp(eventName, "sitechange") == 0)
return SiteChange;
#if ENABLE_BEFORE_SITE_CHANGE_EVENT
else if (std::strcmp(eventName, "beforesitechange") == 0)
return BeforeSiteChange;
#endif
else if (std::strcmp(eventName, "fgcolorchange") == 0)
return FgColorChange;
else if (std::strcmp(eventName, "bgcolorchange") == 0)

View File

@ -7,68 +7,49 @@ dofile('./test_utils.lua')
-- Test app.events
do
local bc = 0
local c = 0
local beforeListener = app.events:on('beforesitechange',
function() bc = bc + 1 end)
local listener = app.events:on('sitechange',
function() c = c + 1 end)
assert(bc == 0)
assert(c == 0)
local a = Sprite(32, 32)
expect_eq(a, app.activeSprite)
expect_eq(1, bc)
expect_eq(1, c)
local b = Sprite(32, 32)
expect_eq(b, app.activeSprite)
expect_eq(2, bc)
expect_eq(2, c)
app.activeSprite = a
expect_eq(3, bc)
expect_eq(3, c)
app.events:off(listener)
app.events:off(beforeListener)
app.activeSprite = b
expect_eq(3, bc)
expect_eq(3, c)
end
-- Alternate version of the events test to ensure proper observer disconnection
do
local bc = 0
local c = 0
local beforeListener = app.events:on('beforesitechange',
function() bc = bc + 1 end)
local listener = app.events:on('sitechange',
function() c = c + 1 end)
assert(bc == 0)
assert(c == 0)
local a = Sprite(32, 32)
expect_eq(a, app.activeSprite)
expect_eq(1, bc)
expect_eq(1, c)
app.events:off(beforeListener)
local b = Sprite(32, 32)
expect_eq(b, app.activeSprite)
expect_eq(1, bc)
expect_eq(2, c)
app.activeSprite = a
expect_eq(1, bc)
expect_eq(3, c)
app.events:off(listener)
app.activeSprite = b
expect_eq(1, bc)
expect_eq(3, c)
end