66 if (
view.begin_renaming()) {
71 std::copy(std::begin(initial_str), std::end(initial_str), std::begin(
view.get_rename_buffer()));
117 const uiBut *rename_but =
static_cast<uiBut *
>(arg);
134 view.get_rename_buffer().data(),
136 view.get_rename_buffer().size(),
205 throw std::runtime_error(
206 "Invalid state, item must be registered through AbstractView::register_item()");
214 "State can't be queried until reconstruction is completed");
236 if (
typeid(
a) !=
typeid(
b)) {
251 const std::unique_ptr<AbstractViewItemDragController> drag_controller =
253 if (!drag_controller) {
259 drag_controller->get_drag_type(),
260 drag_controller->create_drag_data(),
263 drag_controller->on_drag_start();
270 const char **r_disabled_hint)
272 const std::unique_ptr<AbstractViewItemDropController> drop_controller =
274 if (!drop_controller) {
278 return drop_controller->can_drop(drag, r_disabled_hint);
283 const std::unique_ptr<AbstractViewItemDropController> drop_controller =
285 if (!drop_controller) {
289 return drop_controller->drop_tooltip(drag);
294 std::unique_ptr<AbstractViewItemDropController> drop_controller =
297 const char *disabled_hint_dummy =
nullptr;
299 if (drop_controller->can_drop(*drag, &disabled_hint_dummy)) {
300 return drop_controller->on_drop(&
C, *drag);
353 const char **r_disabled_hint)
364 return tooltip.empty() ? nullptr :
BLI_strdup(tooltip.c_str());
struct ARegion * CTX_wm_region(const bContext *C)
#define BLI_assert_msg(a, msg)
#define LISTBASE_FOREACH(type, var, list)
char * BLI_strdup(const char *str) ATTR_WARN_UNUSED_RESULT ATTR_NONNULL() ATTR_MALLOC
void UI_but_flag_disable(uiBut *but, int flag)
uiBut * uiDefBut(uiBlock *block, int type, int retval, const char *str, int x, int y, short width, short height, void *poin, float min, float max, float a1, float a2, const char *tip)
bool UI_but_active_only(const struct bContext *C, struct ARegion *region, uiBlock *block, uiBut *but)
void UI_but_func_rename_set(uiBut *but, uiButHandleRenameFunc func, void *arg1)
struct uiViewItemHandle uiViewItemHandle
char * UI_view_item_drop_tooltip(const uiViewItemHandle *item_, const wmDrag *drag)
bool UI_view_item_is_active(const uiViewItemHandle *item_handle)
bool UI_view_item_can_drop(const uiViewItemHandle *item_, const wmDrag *drag, const char **r_disabled_hint)
bool UI_view_item_matches(const uiViewItemHandle *a_handle, const uiViewItemHandle *b_handle)
bool UI_view_item_drop_handle(bContext *C, const uiViewItemHandle *item_, const ListBase *drags)
bool UI_view_item_drag_start(bContext *C, const uiViewItemHandle *item_)
bool UI_view_item_can_rename(const uiViewItemHandle *item_handle)
void UI_view_item_context_menu_build(bContext *C, const uiViewItemHandle *item_handle, uiLayout *column)
void UI_view_item_begin_rename(uiViewItemHandle *item_handle)
AbstractViewItemDragController(AbstractView &view)
virtual void on_drag_start()
AbstractViewItemDropController(AbstractView &view)
virtual void update_from_old(const AbstractViewItem &old)
void add_rename_button(uiBlock &block)
AbstractView & get_view() const
virtual bool supports_renaming() const
virtual bool rename(StringRefNull new_name)
virtual void build_context_menu(bContext &C, uiLayout &column) const
virtual StringRef get_rename_string() const
virtual std::unique_ptr< AbstractViewItemDropController > create_drop_controller() const
virtual std::unique_ptr< AbstractViewItemDragController > create_drag_controller() const
static bool drop_handle(bContext &C, const AbstractViewItem &item, const ListBase &drags)
static bool can_drop(const AbstractViewItem &item, const wmDrag &drag, const char **r_disabled_hint)
static bool can_rename(const AbstractViewItem &item)
static std::string drop_tooltip(const AbstractViewItem &item, const wmDrag &drag)
static bool matches(const AbstractViewItem &a, const AbstractViewItem &b)
static bool drag_start(bContext &C, const AbstractViewItem &item)
static void rename_button_fn(bContext *UNUSED(C), void *arg, char *UNUSED(origstr))
static AbstractViewItem * find_item_from_rename_button(const uiBut &rename_but)
static const pxr::TfToken b("b", pxr::TfToken::Immortal)
static void copy(bNodeTree *dest_ntree, bNode *dest_node, const bNode *src_node)
uiViewItemHandle * view_item
void WM_event_start_drag(bContext *C, int icon, int type, void *poin, double value, unsigned int flags)