From 71c39a9e2ef300a1ca451f1080cf59dda94ef4a4 Mon Sep 17 00:00:00 2001 From: Julian Eisel Date: Wed, 24 Nov 2021 18:02:56 +0100 Subject: Asset Browser: Activate a catalog when dragging Without this it's easy to loose track of which catalog you are dragging. Things feel generally quite jumpy/disconnected, activating the catalog makes things feel far less like that. I consider this an important usability fix, therefore I'm adding it to the release branch. --- source/blender/editors/include/UI_tree_view.hh | 14 ++++++++++++++ 1 file changed, 14 insertions(+) (limited to 'source/blender/editors/include') diff --git a/source/blender/editors/include/UI_tree_view.hh b/source/blender/editors/include/UI_tree_view.hh index 0d18eedeac9..5acee02a8cc 100644 --- a/source/blender/editors/include/UI_tree_view.hh +++ b/source/blender/editors/include/UI_tree_view.hh @@ -358,11 +358,18 @@ class AbstractTreeViewItem : public TreeViewItemContainer { * custom implementation of #AbstractTreeViewItem::create_drag_controller(). */ class AbstractTreeViewItemDragController { + protected: + AbstractTreeView &tree_view_; + public: + AbstractTreeViewItemDragController(AbstractTreeView &tree_view); virtual ~AbstractTreeViewItemDragController() = default; virtual int get_drag_type() const = 0; virtual void *create_drag_data() const = 0; + virtual void on_drag_start(); + + template inline TreeViewType &tree_view() const; }; /** @@ -453,6 +460,13 @@ inline ItemT &TreeViewItemContainer::add_tree_item(Args &&...args) add_tree_item(std::make_unique(std::forward(args)...))); } +template TreeViewType &AbstractTreeViewItemDragController::tree_view() const +{ + static_assert(std::is_base_of::value, + "Type must derive from and implement the AbstractTreeView interface"); + return static_cast(tree_view_); +} + template TreeViewType &AbstractTreeViewItemDropController::tree_view() const { static_assert(std::is_base_of::value, -- cgit v1.2.3