#include "df/burrow.h" using df::global::ui; struct burrow_name_cancel_hook : df::viewscreen_dwarfmodest { typedef df::viewscreen_dwarfmodest interpose_base; static std::string old_name; DEFINE_VMETHOD_INTERPOSE(void, feed, (std::set *input)) { if (ui->main.mode == df::ui_sidebar_mode::Burrows) { bool was_naming = ui->burrows.in_edit_name_mode; INTERPOSE_NEXT(feed)(input); df::burrow *burrow = vector_get(ui->burrows.list, ui->burrows.sel_index); if (!burrow) return; if (ui->burrows.in_edit_name_mode) { if (!was_naming) { // Just started renaming - make a copy of the old name old_name = burrow->name; } if (input->count(df::interface_key::LEAVESCREEN)) { // Cancel and restore the old name ui->burrows.in_edit_name_mode = false; burrow->name = old_name; } } } else { INTERPOSE_NEXT(feed)(input); } } }; std::string burrow_name_cancel_hook::old_name; IMPLEMENT_VMETHOD_INTERPOSE(burrow_name_cancel_hook, feed);