Previously, set_enabled(false) caused prev_click_down to drift, so a
click that spanned a disable/enable window would be silently dropped.
Move release-edge sync above early returns; handle click_action==nil
guard inline so is_action_down isn't called with nil.