76 (but->
tip ==
nullptr || but->
tip[0] ==
'\0'))
128#ifdef USE_UI_POPOVER_ONCE
144 if (but->
optype !=
nullptr) {
170 return ICON_PREVIEW_LOADING;
206 const float angle_8th_cos = 0.9238795f;
209 const float eps_bias = 1
e-4;
216 if (angle_but_cos < angle_4th_cos - eps_bias) {
220 if (angle_but_cos > angle_8th_cos + eps_bias) {
238 const RadialDirection dir_adjacent = has_8th_adjacent ? dir_adjacent_8th : dir_adjacent_4th;
239 float but_dir_adjacent[2];
245 if (
UNLIKELY(angle_but_cos == angle_adjacent_cos)) {
246 return but->
pie_dir > dir_adjacent;
248 return angle_but_cos > angle_adjacent_cos;
268 float mx =
xy[0], my =
xy[1];
286 int x =
event->xy[0],
y =
event->xy[1];
300 rect.
xmin += delta / 2;
301 rect.
xmax -= delta / 2;
309 const void *find_custom_data)
312 for (
int i = block->buttons.size() - 1;
i >= 0;
i--) {
313 uiBut *but = block->buttons[
i].get();
314 if (find_poll && find_poll(but, find_custom_data) ==
false) {
326 const bool labeledit,
327 const bool for_tooltip,
329 const void *find_custom_data)
331 uiBut *butover =
nullptr;
337 float mx =
xy[0], my =
xy[1];
340 for (
int i = block->buttons.size() - 1;
i >= 0;
i--) {
341 uiBut *but = block->buttons[
i].get();
342 if (find_poll && find_poll(but, find_custom_data) ==
false) {
384 const bool labeledit =
true;
387 uiBut *butover =
nullptr;
393 for (
int i = block->buttons.size() - 1;
i >= 0;
i--) {
394 uiBut *but = block->buttons[
i].get();
422 float mx =
xy[0], my =
xy[1];
424 for (
int i = block->buttons.size() - 1;
i >= 0;
i--) {
425 uiBut *but = block->buttons[
i].get();
437 if (event ==
nullptr) {
490 data.listbox = listbox;
523 [](
const uiBut *but,
const void * ) {
564 for (
const std::unique_ptr<uiBut> &but : block->
buttons) {
617 if (sep_index != std::string::npos) {
632 if (but->
tip ==
nullptr) {
650 for (
const std::unique_ptr<uiBut> &but : block->
buttons) {
725 for (
const std::unique_ptr<uiBut> &but : block->
buttons) {
750 float mx =
xy[0], my =
xy[1];
785 for (
const std::unique_ptr<uiBut> &but : block->buttons) {
786 if (((but->flag & flag_include) == flag_include) && ((but->flag & flag_exclude) == 0)) {
816 int mx =
xy[0], my =
xy[1];
#define LISTBASE_FOREACH(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)
static double angle(const Eigen::Vector3d &v1, const Eigen::Vector3d &v2)
@ UI_BUT_HAS_QUICK_TOOLTIP
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
BMesh const char void * data
ATTR_WARN_UNUSED_RESULT const BMVert const BMEdge * e
static constexpr int64_t not_found
constexpr int64_t find(char c, int64_t pos=0) const
constexpr StringRef substr(int64_t start, int64_t size) const
constexpr int64_t size() const
bool is_interactive() const
bool is_search_highlight() const
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)
bool ui_icon_is_preview_deferred_loading(const int icon_id, const bool big)
#define UI_RADIAL_DIRECTION_NEXT(dir)
bool ui_but_is_toggle(const uiBut *but) ATTR_WARN_UNUSED_RESULT
bool(*)(const uiBut *but, const void *customdata) uiButFindPollFn
#define UI_RADIAL_DIRECTION_PREV(dir)
bool ui_but_contains_pt(const uiBut *but, float mx, float my) ATTR_WARN_UNUSED_RESULT
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])
bool UI_but_has_quick_tooltip(const uiBut *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)
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_but_find_mouse_over(const ARegion *region, const wmEvent *event)
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)
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_array_value(const uiBut *but)
bool RNA_property_array_check(PropertyRNA *prop)
PropertySubType RNA_property_subtype(PropertyRNA *prop)
ARegionRuntimeHandle * runtime
blender::Vector< std::unique_ptr< uiBut > > buttons
uiBut * first_but() const
int but_index(const uiBut *but) const
uiBut * next_but(const uiBut *but) const
blender::ui::AbstractViewItem * view_item
blender::ui::EmbossType emboss
std::function< std::string(const uiBut *)> tip_quick_func
uiButToolTipFunc tip_func
uiButToolTipCustomFunc tip_custom_func
wmEventModifierFlag modifier
wmOperatorType * WM_operatortype_find(const char *idname, bool quiet)