54 "Item activation can't be done until reconstruction is completed");
137 if (view.begin_renaming()) {
142 std::copy(std::begin(initial_str), std::end(initial_str), std::begin(view.get_rename_buffer()));
178 if (item->
is_renaming() && (view.get_rename_buffer().data() == rename_but.
poin)) {
188 const uiBut *rename_but =
static_cast<uiBut *
>(arg);
205 view.get_rename_buffer().data(),
207 view.get_rename_buffer().size(),
290 throw std::runtime_error(
291 "Invalid state, item must be registered through AbstractView::register_item()");
319 "State can't be queried until reconstruction is completed");
346 if (
typeid(a) !=
typeid(
b)) {
355 std::swap(a.view_item_but_,
b.view_item_but_);
396 const std::unique_ptr<AbstractViewItemDragController> drag_controller =
398 if (!drag_controller) {
404 drag_controller->get_drag_type(),
405 drag_controller->create_drag_data(),
407 drag_controller->on_drag_start();
ARegion * CTX_wm_region(const bContext *C)
#define BLI_assert_msg(a, msg)
#define LISTBASE_FOREACH(type, var, list)
void UI_but_flag_disable(uiBut *but, int flag)
bool UI_view_item_can_rename(const blender::ui::AbstractViewItem &item)
bool UI_view_item_popup_keep_open(const blender::ui::AbstractViewItem &item)
uiBut * uiDefBut(uiBlock *block, int type, int retval, blender::StringRef str, int x, int y, short width, short height, void *poin, float min, float max, const char *tip)
bool UI_view_item_drag_start(bContext &C, const blender::ui::AbstractViewItem &item)
void UI_view_item_begin_rename(blender::ui::AbstractViewItem &item)
void UI_but_func_rename_set(uiBut *but, uiButHandleRenameFunc func, void *arg1)
bool UI_view_item_matches(const blender::ui::AbstractViewItem &a, const blender::ui::AbstractViewItem &b)
bool UI_but_active_only(const bContext *C, ARegion *region, uiBlock *block, uiBut *but)
bool UI_view_item_supports_drag(const blender::ui::AbstractViewItem &item)
AbstractViewItemDragController(AbstractView &view)
virtual void on_drag_start()
void disable_activatable()
bool is_interactive() const
void activate(bContext &C)
virtual void change_state_delayed()
void disable_interaction()
virtual void update_from_old(const AbstractViewItem &old)
void add_rename_button(uiBlock &block)
virtual bool should_be_filtered_visible(StringRefNull filter_string) const
bool is_highlighted_search_
virtual bool set_state_active()
AbstractView & get_view() const
virtual void on_activate(bContext &C)
virtual std::unique_ptr< DropTargetInterface > create_item_drop_target()
virtual bool supports_renaming() const
bool is_search_highlight() const
bool is_filtered_visible() const
uiButViewItem * view_item_but_
uiButViewItem * view_item_button() const
virtual std::optional< bool > should_be_active() const
virtual bool rename(const bContext &C, StringRefNull new_name)
bool is_filtered_visible_
virtual void build_context_menu(bContext &C, uiLayout &column) const
virtual StringRef get_rename_string() const
void rename_apply(const bContext &C)
virtual std::unique_ptr< AbstractViewItemDragController > create_drag_controller() const
virtual std::optional< std::string > debug_name() const
virtual void foreach_view_item(FunctionRef< void(AbstractViewItem &)> iter_fn) const =0
bool get_popup_keep_open() const
static bool matches(const AbstractViewItem &a, const AbstractViewItem &b)
static void swap_button_pointers(AbstractViewItem &a, AbstractViewItem &b)
local_group_size(16, 16) .push_constant(Type b
void ui_view_item_swap_button_pointers(blender::ui::AbstractViewItem &a, blender::ui::AbstractViewItem &b)
static void rename_button_fn(bContext *C, void *arg, char *)
static AbstractViewItem * find_item_from_rename_button(const uiBut &rename_but)
struct bContext::@80 data
blender::ui::AbstractViewItem * view_item
void WM_event_start_drag(bContext *C, int icon, eWM_DragDataType type, void *poin, uint flags)