GPv3: Send updates after drop operation #111519

Merged
Falk David merged 6 commits from PratikPB2123/blender:gpv3-drop-node-update into main 2023-09-15 11:31:32 +02:00
1 changed files with 16 additions and 7 deletions

View File

@ -19,6 +19,8 @@
#include "ED_undo.hh" #include "ED_undo.hh"
#include "WM_api.hh"
#include <fmt/format.h> #include <fmt/format.h>
namespace blender::ui::greasepencil { namespace blender::ui::greasepencil {
@ -74,7 +76,7 @@ class LayerNodeDropTarget : public TreeViewItemDropTarget {
return ""; return "";
} }
bool on_drop(bContext * /*C*/, const DragInfo &drag_info) const override bool on_drop(bContext *C, const DragInfo &drag_info) const override
{ {
const wmDragGreasePencilLayer *drag_grease_pencil = const wmDragGreasePencilLayer *drag_grease_pencil =
static_cast<const wmDragGreasePencilLayer *>(drag_info.drag_data.poin); static_cast<const wmDragGreasePencilLayer *>(drag_info.drag_data.poin);
@ -102,21 +104,28 @@ class LayerNodeDropTarget : public TreeViewItemDropTarget {
LayerGroup &drop_group = drop_tree_node_.as_group(); LayerGroup &drop_group = drop_tree_node_.as_group();
drag_parent.unlink_node(&drag_layer.as_node()); drag_parent.unlink_node(&drag_layer.as_node());
drop_group.add_layer(&drag_layer); drop_group.add_layer(&drag_layer);
return true; break;
} }
case DropLocation::Before: case DropLocation::Before: {
drag_parent.unlink_node(&drag_layer.as_node()); drag_parent.unlink_node(&drag_layer.as_node());
/* Draw order is inverted, so inserting before means inserting below. */ /* Draw order is inverted, so inserting before means inserting below. */
drop_parent_group->add_layer_after(&drag_layer, &drop_tree_node_); drop_parent_group->add_layer_after(&drag_layer, &drop_tree_node_);
return true; break;
case DropLocation::After: }
case DropLocation::After: {
drag_parent.unlink_node(&drag_layer.as_node()); drag_parent.unlink_node(&drag_layer.as_node());
/* Draw order is inverted, so inserting after means inserting above. */ /* Draw order is inverted, so inserting after means inserting above. */
drop_parent_group->add_layer_before(&drag_layer, &drop_tree_node_); drop_parent_group->add_layer_before(&drag_layer, &drop_tree_node_);
return true; break;
}
default: {
BLI_assert_unreachable();
return false;
}
} }
WM_event_add_notifier(C, NC_GPENCIL | NA_EDITED, nullptr);
return false; return true;
} }
}; };