Changeset View
Changeset View
Standalone View
Standalone View
source/blender/editors/interface/interface_query.c
| Show First 20 Lines • Show All 270 Lines • ▼ Show 20 Lines | uiBut *ui_but_find_mouse_over_ex(ARegion *region, const int x, const int y, const bool labeledit) | ||||
| if (!ui_region_contains_point_px(region, x, y)) { | if (!ui_region_contains_point_px(region, x, y)) { | ||||
| return NULL; | return NULL; | ||||
| } | } | ||||
| LISTBASE_FOREACH (uiBlock *, block, ®ion->uiblocks) { | LISTBASE_FOREACH (uiBlock *, block, ®ion->uiblocks) { | ||||
| float mx = x, my = y; | float mx = x, my = y; | ||||
| ui_window_to_block_fl(region, block, &mx, &my); | ui_window_to_block_fl(region, block, &mx, &my); | ||||
| for (uiBut *but = block->buttons.last; but; but = but->prev) { | LISTBASE_FOREACH_BACKWARD (uiBut *, but, &block->buttons) { | ||||
| if (ui_but_is_interactive(but, labeledit)) { | if (ui_but_is_interactive(but, labeledit)) { | ||||
| if (but->pie_dir != UI_RADIAL_NONE) { | if (but->pie_dir != UI_RADIAL_NONE) { | ||||
| if (ui_but_isect_pie_seg(block, but)) { | if (ui_but_isect_pie_seg(block, but)) { | ||||
| butover = but; | butover = but; | ||||
| break; | break; | ||||
| } | } | ||||
| } | } | ||||
| else if (ui_but_contains_pt(but, mx, my)) { | else if (ui_but_contains_pt(but, mx, my)) { | ||||
| Show All 31 Lines | uiBut *ui_but_find_rect_over(const struct ARegion *region, const rcti *rect_px) | ||||
| rctf rect_px_fl; | rctf rect_px_fl; | ||||
| BLI_rctf_rcti_copy(&rect_px_fl, rect_px); | BLI_rctf_rcti_copy(&rect_px_fl, rect_px); | ||||
| uiBut *butover = NULL; | uiBut *butover = NULL; | ||||
| LISTBASE_FOREACH (uiBlock *, block, ®ion->uiblocks) { | LISTBASE_FOREACH (uiBlock *, block, ®ion->uiblocks) { | ||||
| rctf rect_block; | rctf rect_block; | ||||
| ui_window_to_block_rctf(region, block, &rect_block, &rect_px_fl); | ui_window_to_block_rctf(region, block, &rect_block, &rect_px_fl); | ||||
| for (uiBut *but = block->buttons.last; but; but = but->prev) { | LISTBASE_FOREACH_BACKWARD (uiBut *, but, &block->buttons) { | ||||
| if (ui_but_is_interactive(but, labeledit)) { | if (ui_but_is_interactive(but, labeledit)) { | ||||
| /* No pie menu support. */ | /* No pie menu support. */ | ||||
| BLI_assert(but->pie_dir == UI_RADIAL_NONE); | BLI_assert(but->pie_dir == UI_RADIAL_NONE); | ||||
| if (ui_but_contains_rect(but, &rect_block)) { | if (ui_but_contains_rect(but, &rect_block)) { | ||||
| butover = but; | butover = but; | ||||
| break; | break; | ||||
| } | } | ||||
| } | } | ||||
| Show All 13 Lines | |||||
| uiBut *ui_list_find_mouse_over_ex(ARegion *region, int x, int y) | uiBut *ui_list_find_mouse_over_ex(ARegion *region, int x, int y) | ||||
| { | { | ||||
| if (!ui_region_contains_point_px(region, x, y)) { | if (!ui_region_contains_point_px(region, x, y)) { | ||||
| return NULL; | return NULL; | ||||
| } | } | ||||
| LISTBASE_FOREACH (uiBlock *, block, ®ion->uiblocks) { | LISTBASE_FOREACH (uiBlock *, block, ®ion->uiblocks) { | ||||
| float mx = x, my = y; | float mx = x, my = y; | ||||
| ui_window_to_block_fl(region, block, &mx, &my); | ui_window_to_block_fl(region, block, &mx, &my); | ||||
| for (uiBut *but = block->buttons.last; but; but = but->prev) { | LISTBASE_FOREACH_BACKWARD (uiBut *, but, &block->buttons) { | ||||
| if (but->type == UI_BTYPE_LISTBOX && ui_but_contains_pt(but, mx, my)) { | if (but->type == UI_BTYPE_LISTBOX && ui_but_contains_pt(but, mx, my)) { | ||||
| return but; | return but; | ||||
| } | } | ||||
| } | } | ||||
| } | } | ||||
| return NULL; | return NULL; | ||||
| } | } | ||||
| Show All 28 Lines | if (ui_but_is_editable(but)) { | ||||
| return but; | return but; | ||||
| } | } | ||||
| } | } | ||||
| return NULL; | return NULL; | ||||
| } | } | ||||
| uiBut *ui_but_first(uiBlock *block) | uiBut *ui_but_first(uiBlock *block) | ||||
| { | { | ||||
| uiBut *but; | LISTBASE_FOREACH (uiBut *, but, &block->buttons) { | ||||
| but = block->buttons.first; | |||||
| while (but) { | |||||
| if (ui_but_is_editable(but)) { | if (ui_but_is_editable(but)) { | ||||
| return but; | return but; | ||||
| } | } | ||||
| but = but->next; | |||||
| } | } | ||||
| return NULL; | return NULL; | ||||
| } | } | ||||
| uiBut *ui_but_last(uiBlock *block) | uiBut *ui_but_last(uiBlock *block) | ||||
| { | { | ||||
| uiBut *but; | uiBut *but; | ||||
| ▲ Show 20 Lines • Show All 258 Lines • Show Last 20 Lines | |||||