[Bf-blender-cvs] [587a1b16aeb] master: Attributes: Autofill for attribute conversion operators
Ramil Roosileht
noreply at git.blender.org
Mon Dec 5 23:31:01 CET 2022
Commit: 587a1b16aeb087888de3188a0c44d25e86de7169
Author: Ramil Roosileht
Date: Mon Dec 5 16:28:50 2022 -0600
Branches: master
https://developer.blender.org/rB587a1b16aeb087888de3188a0c44d25e86de7169
Attributes: Autofill for attribute conversion operators
Make "Convert Attribute" and "Convert Color Attribute" operators
auto-fill their initial settings with active attribute's domain
and data type if it wasn't already set explicitly.
Differential Revision: https://developer.blender.org/D16550
===================================================================
M source/blender/editors/geometry/geometry_attributes.cc
===================================================================
diff --git a/source/blender/editors/geometry/geometry_attributes.cc b/source/blender/editors/geometry/geometry_attributes.cc
index 7f163da493b..4e53349707d 100644
--- a/source/blender/editors/geometry/geometry_attributes.cc
+++ b/source/blender/editors/geometry/geometry_attributes.cc
@@ -34,6 +34,7 @@
#include "UI_resources.h"
#include "ED_geometry.h"
+#include "ED_mesh.h"
#include "ED_object.h"
#include "geometry_intern.hh"
@@ -559,6 +560,28 @@ void GEOMETRY_OT_color_attribute_duplicate(wmOperatorType *ot)
ot->flag = OPTYPE_REGISTER | OPTYPE_UNDO;
}
+static int geometry_attribute_convert_invoke(bContext *C,
+ wmOperator *op,
+ const wmEvent * /*event*/)
+{
+ Object *ob = ED_object_context(C);
+ Mesh *mesh = static_cast<Mesh *>(ob->data);
+
+ const bke::AttributeMetaData meta_data = *mesh->attributes().lookup_meta_data(
+ BKE_id_attributes_active_get(&mesh->id)->name);
+
+ PropertyRNA *prop = RNA_struct_find_property(op->ptr, "domain");
+ if (!RNA_property_is_set(op->ptr, prop)) {
+ RNA_enum_set(op->ptr, "domain", meta_data.domain);
+ }
+ prop = RNA_struct_find_property(op->ptr, "data_type");
+ if (!RNA_property_is_set(op->ptr, prop)) {
+ RNA_enum_set(op->ptr, "data_type", meta_data.data_type);
+ }
+
+ return WM_operator_props_dialog_popup(C, op, 300);
+}
+
static void geometry_attribute_convert_ui(bContext * /*C*/, wmOperator *op)
{
uiLayout *layout = op->layout;
@@ -576,13 +599,6 @@ static void geometry_attribute_convert_ui(bContext * /*C*/, wmOperator *op)
}
}
-static int geometry_attribute_convert_invoke(bContext *C,
- wmOperator *op,
- const wmEvent * /*event*/)
-{
- return WM_operator_props_dialog_popup(C, op, 300);
-}
-
static bool geometry_color_attribute_convert_poll(bContext *C)
{
if (!geometry_attributes_poll(C)) {
@@ -614,6 +630,28 @@ static int geometry_color_attribute_convert_exec(bContext *C, wmOperator *op)
return OPERATOR_FINISHED;
}
+static int geometry_color_attribute_convert_invoke(bContext *C,
+ wmOperator *op,
+ const wmEvent * /*event*/)
+{
+ Object *ob = ED_object_context(C);
+ Mesh *mesh = static_cast<Mesh *>(ob->data);
+
+ const bke::AttributeMetaData meta_data = *mesh->attributes().lookup_meta_data(
+ BKE_id_attributes_active_color_get(&mesh->id)->name);
+
+ PropertyRNA *prop = RNA_struct_find_property(op->ptr, "domain");
+ if (!RNA_property_is_set(op->ptr, prop)) {
+ RNA_enum_set(op->ptr, "domain", meta_data.domain);
+ }
+ prop = RNA_struct_find_property(op->ptr, "data_type");
+ if (!RNA_property_is_set(op->ptr, prop)) {
+ RNA_enum_set(op->ptr, "data_type", meta_data.data_type);
+ }
+
+ return WM_operator_props_dialog_popup(C, op, 300);
+}
+
static void geometry_color_attribute_convert_ui(bContext *UNUSED(C), wmOperator *op)
{
uiLayout *layout = op->layout;
@@ -630,7 +668,7 @@ void GEOMETRY_OT_color_attribute_convert(wmOperatorType *ot)
ot->description = "Change how the color attribute is stored";
ot->idname = "GEOMETRY_OT_color_attribute_convert";
- ot->invoke = geometry_attribute_convert_invoke;
+ ot->invoke = geometry_color_attribute_convert_invoke;
ot->exec = geometry_color_attribute_convert_exec;
ot->poll = geometry_color_attribute_convert_poll;
ot->ui = geometry_color_attribute_convert_ui;
More information about the Bf-blender-cvs
mailing list