49 std::unique_ptr<AbstractView>
view;
57 std::unique_ptr<AbstractView> view)
59 ViewLink *view_link = MEM_new<ViewLink>(__func__);
62 view_link->
view = std::move(view);
63 view_link->
idname = idname;
65 return dynamic_cast<T *
>(view_link->
view.get());
70 std::unique_ptr<AbstractGridView> grid_view)
77 std::unique_ptr<AbstractTreeView> tree_view)
96 views_bounds.
add(link->view.get(), minmax);
118 for (
const auto item : views_bounds.
items()) {
119 const rcti &bounds = item.value;
125 view.bounds_ = bounds;
139 if (view_link->view->listen(*listener_params->
notifier)) {
148 view_link->view->draw_overlays(*region, *block);
162 float mx =
xy[0], my =
xy[1];
166 std::optional<rcti> bounds = view_link->view->get_bounds();
171 rcti padded_bounds = *bounds;
176 return view_link->view.get();
213 view_link->view->clear_search_highlight();
224 if (std::unique_ptr<DropTargetInterface> target = item->create_item_drop_target()) {
232 if (std::unique_ptr<DropTargetInterface> target = view->create_drop_target()) {
246 if (view_link->view.get() == &view) {
247 return view_link->idname;
269 if (old_view_link->idname == idname) {
270 return dynamic_cast<T *
>(old_view_link->view.get());
307 if (&old_item.
get_view() != old_view) {
#define LISTBASE_FOREACH(type, var, list)
#define LISTBASE_FOREACH_MUTABLE(type, var, list)
void BLI_addtail(struct ListBase *listbase, void *vlink) ATTR_NONNULL(1)
void BLI_rcti_init_minmax(struct rcti *rect)
void BLI_rcti_rctf_copy_round(struct rcti *dst, const struct rctf *src)
void BLI_rcti_pad(struct rcti *rect, int pad_x, int pad_y)
bool BLI_rcti_isect_pt(const struct rcti *rect, int x, int y)
bool BLI_rcti_is_empty(const struct rcti *rect)
void BLI_rcti_do_minmax_rcti(struct rcti *rect, const struct rcti *other)
void ED_region_tag_redraw(ARegion *region)
blender::ui::AbstractView * UI_region_view_find_at(const ARegion *region, const int xy[2], int pad)
const uiStyle * UI_style_get_dpi()
bool UI_view_item_matches(const blender::ui::AbstractViewItem &a, const blender::ui::AbstractViewItem &b)
blender::ui::AbstractViewItem * UI_region_views_find_item_at(const ARegion ®ion, const int xy[2])
int pad[32 - sizeof(int)]
bool add(const Key &key, const Value &value)
const Value & lookup(const Key &key) const
ItemIterator items() const
constexpr bool is_empty() const
AbstractView & get_view() const
void ui_window_to_block_fl(const ARegion *region, const uiBlock *block, float *x, float *y)
uiBut uiBut * ui_view_item_find_active(const ARegion *region)
uiBut * ui_view_item_find_mouse_over(const ARegion *region, const int xy[2]) ATTR_NONNULL(1
bool ui_region_contains_point_px(const ARegion *region, const int xy[2]) ATTR_NONNULL(1
void UI_region_views_clear_search_highlight(const ARegion *region)
blender::ui::AbstractView * UI_region_view_find_at(const ARegion *region, const int xy[2], const int pad)
void ui_block_views_draw_overlays(const ARegion *region, const uiBlock *block)
uiButViewItem * ui_block_view_find_matching_view_item_but_in_old_block(const uiBlock &new_block, const ui::AbstractViewItem &new_item)
static T * ui_block_view_find_matching_in_old_block_impl(const uiBlock &new_block, const T &new_view)
AbstractGridView * UI_block_add_view(uiBlock &block, StringRef idname, std::unique_ptr< AbstractGridView > grid_view)
void ui_block_free_views(uiBlock *block)
blender::ui::AbstractView * ui_block_view_find_matching_in_old_block(const uiBlock &new_block, const blender::ui::AbstractView &new_view)
ui::AbstractViewItem * UI_region_views_find_item_at(const ARegion ®ion, const int xy[2])
static StringRef ui_block_view_find_idname(const uiBlock &block, const AbstractView &view)
ui::AbstractViewItem * UI_region_views_find_active_item(const ARegion *region)
void ui_block_views_listen(const uiBlock *block, const wmRegionListenerParams *listener_params)
static T * ui_block_add_view_impl(uiBlock &block, StringRef idname, std::unique_ptr< AbstractView > view)
void ui_block_views_bounds_calc(const uiBlock *block)
uiBut * UI_region_views_find_active_item_but(const ARegion *region)
std::unique_ptr< DropTargetInterface > region_views_find_drop_target_at(const ARegion *region, const int xy[2])
std::unique_ptr< AbstractView > view
static void views_bounds_calc(const uiBlock &block)
blender::ui::AbstractViewItem * view_item
const wmNotifier * notifier