Fix T87316: No undo push for clicking on attribute name

Since there is a special callback for assigning the name from the
search box, and the callback doesn't call an operator or something
else that would do an undo push, I think the solution is to do it
manually here.

Another option would be adding the button flag "UI_BUT_UNDO", which
isn't set by default for search buttons, but that gives us ugly names for
the undo steps, so an explicit push is better in this case.

Differential Revision: https://developer.blender.org/D11190
This commit is contained in:
Hans Goudey 2021-05-20 12:17:54 -04:00
parent ee5bfde9e6
commit 991a1cdf5d
Notes: blender-bot 2023-02-21 17:59:30 +01:00
Referenced by issue #87316, No undo push for selecting item in attribute search
1 changed files with 5 additions and 1 deletions

View File

@ -33,6 +33,8 @@
#include "RNA_access.h"
#include "RNA_enum_types.h"
#include "ED_undo.h"
#include "BLT_translation.h"
#include "UI_interface.h"
@ -132,7 +134,7 @@ static void attribute_search_update_fn(const bContext *UNUSED(C),
BLI_string_search_free(search);
}
static void attribute_search_exec_fn(bContext *UNUSED(C), void *data_v, void *item_v)
static void attribute_search_exec_fn(bContext *C, void *data_v, void *item_v)
{
AttributeSearchData *data = static_cast<AttributeSearchData *>(data_v);
AvailableAttributeInfo *item = static_cast<AvailableAttributeInfo *>(item_v);
@ -140,6 +142,8 @@ static void attribute_search_exec_fn(bContext *UNUSED(C), void *data_v, void *it
bNodeSocket &socket = data->socket;
bNodeSocketValueString *value = static_cast<bNodeSocketValueString *>(socket.default_value);
BLI_strncpy(value->value, item->name.c_str(), MAX_NAME);
ED_undo_push(C, "Assign Attribute Name");
}
void node_geometry_add_attribute_search_button(const bContext *C,