allow buttons to interrupt events

Most button onpress1 handlers will want to return true.
This commit is contained in:
Kartik K. Agaram 2022-08-23 09:40:48 -07:00
parent 490f10c6f8
commit aadc50f3b6
2 changed files with 6 additions and 2 deletions

View File

@ -15,7 +15,7 @@ function propagate_to_button_handlers(x, y, mouse_button)
for _,ev in ipairs(Button_handlers) do
if x>ev.x and x<ev.x+ev.w and y>ev.y and y<ev.y+ev.h then
if ev.onpress1 and mouse_button == 1 then
ev.onpress1()
return ev.onpress1()
end
end
end

View File

@ -162,6 +162,7 @@ function edit.draw(State)
end
schedule_save(State)
record_undo_event(State, {before=Drawing.before, after=snapshot(State, line_index-1, line_index+1)})
return true -- don't handle any other events with this mouse button press
end,
})
end
@ -207,7 +208,10 @@ end
function edit.mouse_pressed(State, x,y, mouse_button)
if State.search_term then return end
--? print('press', State.selection1.line, State.selection1.pos)
propagate_to_button_handlers(x,y, mouse_button)
if propagate_to_button_handlers(x,y, mouse_button) then
-- press on a button and it returned 'true' to short-circuit
return
end
for line_index,line in ipairs(State.lines) do
if line.mode == 'text' then