72 (but->
tip ==
nullptr || but->
tip[0] ==
'\0'))
123#ifdef USE_UI_POPOVER_ONCE
139 if (but->
optype !=
nullptr) {
181 vec[0] =
cosf(angle);
182 vec[1] =
sinf(angle);
194 const float angle_8th_cos = 0.9238795f;
197 const float eps_bias = 1
e-4;
204 if (angle_but_cos < angle_4th_cos - eps_bias) {
208 if (angle_but_cos > angle_8th_cos + eps_bias) {
226 const RadialDirection dir_adjacent = has_8th_adjacent ? dir_adjacent_8th : dir_adjacent_4th;
227 float but_dir_adjacent[2];
233 if (
UNLIKELY(angle_but_cos == angle_adjacent_cos)) {
234 return but->
pie_dir > dir_adjacent;
236 return angle_but_cos > angle_adjacent_cos;
256 float mx =
xy[0], my =
xy[1];
274 int x =
event->xy[0], y =
event->xy[1];
288 rect.
xmin += delta / 2;
289 rect.
xmax -= delta / 2;
297 const void *find_custom_data)
301 if (find_poll && find_poll(but, find_custom_data) ==
false) {
313 const bool labeledit,
314 const bool for_tooltip,
316 const void *find_custom_data)
318 uiBut *butover =
nullptr;
324 float mx =
xy[0], my =
xy[1];
328 if (find_poll && find_poll(but, find_custom_data) ==
false) {
370 const bool labeledit =
true;
373 uiBut *butover =
nullptr;
407 float mx =
xy[0], my =
xy[1];
421 if (event ==
nullptr) {
448 const uiBut *row_but =
static_cast<const uiBut *
>(customdata);
485 data.listbox = listbox;
518 [](
const uiBut *but,
const void * ) {
524 return view_item_but->view_item->is_search_highlight();
613 if (sep_index != std::string::npos) {
628 if (but->
tip ==
nullptr) {
632 return (str_sep - but->
tip);
676 for (; but; but = but->
next) {
739 float mx =
xy[0], my =
xy[1];
775 if (((but->flag & flag_include) == flag_include) && ((but->flag & flag_exclude) == 0)) {
803 if (region->v2d.mask.xmin != region->v2d.mask.xmax) {
804 const View2D *v2d = ®ion->v2d;
805 int mx =
xy[0], my =
xy[1];
827 if (region->v2d.mask.xmin != region->v2d.mask.xmax) {
828 const View2D *v2d = ®ion->v2d;
#define LISTBASE_FOREACH(type, var, list)
#define LISTBASE_FOREACH_BACKWARD(type, var, list)
float angle_signed_v2v2(const float v1[2], const float v2[2]) ATTR_WARN_UNUSED_RESULT
MINLINE float dot_v2v2(const float a[2], const float b[2]) ATTR_WARN_UNUSED_RESULT
bool BLI_rcti_isect_pt_v(const struct rcti *rect, const int xy[2])
BLI_INLINE int BLI_rcti_size_y(const struct rcti *rct)
bool BLI_rctf_isect(const struct rctf *src1, const struct rctf *src2, struct rctf *dest)
bool BLI_rcti_isect_pt(const struct rcti *rect, int x, int y)
bool BLI_rcti_isect(const struct rcti *src1, const struct rcti *src2, struct rcti *dest)
BLI_INLINE int BLI_rcti_size_x(const struct rcti *rct)
bool BLI_rctf_isect_pt(const struct rctf *rect, float x, float y)
void BLI_rctf_rcti_copy(struct rctf *dst, const struct rcti *src)
void BLI_rcti_rctf_copy(struct rcti *dst, const struct rctf *src)
char char size_t char const char * BLI_strchr_or_end(const char *str, char ch) ATTR_WARN_UNUSED_RESULT ATTR_RETURNS_NONNULL ATTR_NONNULL(1)
static double angle(const Eigen::Vector3d &v1, const Eigen::Vector3d &v2)
@ UI_EMBOSS_NONE_OR_STATUS
@ UI_BUT_HAS_TOOLTIP_LABEL
char char UI_view2d_mouse_in_scrollers(const ARegion *region, const View2D *v2d, const int xy[2]) ATTR_NONNULL(1
char char char char UI_view2d_rect_in_scrollers(const ARegion *region, const View2D *v2d, const rcti *rect) ATTR_NONNULL(1
ATTR_WARN_UNUSED_RESULT const BMVert const BMEdge * e
constexpr StringRef substr(int64_t start, int64_t size) const
bool is_interactive() const
draw_view push_constant(Type::INT, "radiance_src") .push_constant(Type capture_info_buf storage_buf(1, Qualifier::READ, "ObjectBounds", "bounds_buf[]") .push_constant(Type draw_view int
void ui_window_to_block(const ARegion *region, const uiBlock *block, int *x, int *y)
const short ui_radial_dir_to_angle[8]
void ui_window_to_region_rcti(const ARegion *region, rcti *rect_dst, const rcti *rct_src)
void ui_window_to_region(const ARegion *region, int *x, int *y)
void ui_window_to_block_fl(const ARegion *region, const uiBlock *block, float *x, float *y)
bool ui_but_rna_equals(const uiBut *a, const uiBut *b)
void ui_window_to_block_rctf(const ARegion *region, const uiBlock *block, rctf *rct_dst, const rctf *rct_src)
void ui_region_winrct_get_no_margin(const ARegion *region, rcti *r_rect)
bool ui_but_drag_is_draggable(const uiBut *but)
#define UI_RADIAL_DIRECTION_NEXT(dir)
bool(*)(const uiBut *but, const void *customdata) uiButFindPollFn
#define UI_RADIAL_DIRECTION_PREV(dir)
uiBut * ui_list_find_mouse_over(const ARegion *region, const wmEvent *event)
size_t ui_but_drawstr_len_without_sep_char(const uiBut *but)
uiList * UI_list_find_mouse_over(const ARegion *region, const wmEvent *event)
static bool ui_but_is_listrow_at_index(const uiBut *but, const void *customdata)
uiBut * ui_block_active_but_get(const uiBlock *block)
bool UI_block_is_empty_ex(const uiBlock *block, const bool skip_title)
blender::StringRef ui_but_drawstr_without_sep_char(const uiBut *but)
bool UI_block_can_add_separator(const uiBlock *block)
bool ui_but_contains_point_px(const uiBut *but, const ARegion *region, const int xy[2])
uiBut * ui_list_find_from_row(const ARegion *region, const uiBut *row_but)
bool ui_block_is_popup_any(const uiBlock *block)
static uiBut * ui_but_find(const ARegion *region, const uiButFindPollFn find_poll, const void *find_custom_data)
bool ui_but_is_toggle(const uiBut *but)
bool ui_but_contains_pt(const uiBut *but, float mx, float my)
uiBut * ui_but_find_mouse_over_ex(const ARegion *region, const int xy[2], const bool labeledit, const bool for_tooltip, const uiButFindPollFn find_poll, const void *find_custom_data)
uiBut * ui_but_next(uiBut *but)
bool ui_but_contains_rect(const uiBut *but, const rctf *rect)
bool ui_but_contains_password(const uiBut *but)
ARegion * ui_screen_region_find_mouse_over(bScreen *screen, const wmEvent *event)
uiBut * ui_but_find_mouse_over(const ARegion *region, const wmEvent *event)
bool UI_but_is_utf8(const uiBut *but)
size_t ui_but_tip_len_only_first_line(const uiBut *but)
bool UI_block_is_empty(const uiBlock *block)
uiBut * ui_view_item_find_active(const ARegion *region)
static const uiBut * ui_but_next_non_separator(const uiBut *but)
static wmOperatorType * g_ot_tool_set_by_id
static bool ui_list_contains_row(const uiBut *listbox_but, const uiBut *listrow_but)
void ui_interface_tag_script_reload_queries()
uiBut * ui_list_row_find_mouse_over(const ARegion *region, const int xy[2])
static bool ui_but_is_active_view_item(const uiBut *but, const void *)
static bool ui_but_isect_pie_seg(const uiBlock *block, const uiBut *but)
bool ui_but_contains_point_px_icon(const uiBut *but, ARegion *region, const wmEvent *event)
bool ui_block_is_popover(const uiBlock *block)
uiBlock * ui_block_find_mouse_over_ex(const ARegion *region, const int xy[2], bool only_clip)
bool ui_but_is_editable(const uiBut *but)
ARegion * ui_screen_region_find_mouse_over_ex(bScreen *screen, const int xy[2])
bool ui_block_is_pie_menu(const uiBlock *block)
bool ui_but_is_cursor_warp(const uiBut *but)
bool UI_block_has_active_default_button(const uiBlock *block)
uiBut * ui_view_item_find_mouse_over(const ARegion *region, const int xy[2])
bool ui_region_contains_point_px(const ARegion *region, const int xy[2])
uiBut * ui_view_item_find_search_highlight(const ARegion *region)
uiBlock * ui_block_find_mouse_over(const ARegion *region, const wmEvent *event, bool only_clip)
uiBut * ui_region_find_first_but_test_flag(ARegion *region, int flag_include, int flag_exclude)
bool ui_but_is_interactive_ex(const uiBut *but, const bool labeledit, const bool for_tooltip)
uiBut * ui_but_prev(uiBut *but)
static bool ui_but_is_view_item_fn(const uiBut *but, const void *)
uiBut * ui_list_find_mouse_over_ex(const ARegion *region, const int xy[2])
bool ui_block_is_menu(const uiBlock *block)
bool ui_region_contains_rect_px(const ARegion *region, const rcti *rect_px)
bool ui_but_is_popover_once_compat(const uiBut *but)
bool ui_but_is_interactive(const uiBut *but, const bool labeledit)
void ui_but_pie_dir(RadialDirection dir, float vec[2])
uiBut * ui_region_find_active_but(ARegion *region)
int ui_but_icon(const uiBut *but)
uiBut * ui_but_last(uiBlock *block)
static bool ui_but_is_listbox_with_row(const uiBut *but, const void *customdata)
bool ui_but_is_editable_as_text(const uiBut *but)
bool UI_but_is_tool(const uiBut *but)
uiBut * ui_but_first(uiBlock *block)
uiBut * ui_but_find_rect_over(const ARegion *region, const rcti *rect_px)
static bool ui_but_is_listrow(const uiBut *but, const void *)
uiBut * ui_list_row_find_index(const ARegion *region, const int index, uiBut *listbox)
bool UI_but_has_tooltip_label(const uiBut *but)
bool ui_but_has_array_value(const uiBut *but)
bool RNA_property_array_check(PropertyRNA *prop)
PropertySubType RNA_property_subtype(PropertyRNA *prop)
blender::ui::AbstractViewItem * view_item
uiButToolTipFunc tip_func
wmOperatorType * WM_operatortype_find(const char *idname, bool quiet)