Add "tweak burrow-name-cancel" to fix bug 1518
http://www.bay12games.com/dwarves/mantisbt/view.php?id=1518 Closes #526develop
parent
10e13c532a
commit
fe8be90992
@ -0,0 +1,44 @@
|
||||
#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<df::interface_key> *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);
|
Loading…
Reference in New Issue