Blender  V2.93
interface_query.c File Reference
#include "BLI_listbase.h"
#include "BLI_math.h"
#include "BLI_rect.h"
#include "BLI_utildefines.h"
#include "DNA_screen_types.h"
#include "UI_interface.h"
#include "UI_view2d.h"
#include "RNA_access.h"
#include "interface_intern.h"
#include "WM_api.h"
#include "WM_types.h"

Go to the source code of this file.

Functions

Button (#uiBut) Spatial
void ui_but_pie_dir (RadialDirection dir, float vec[2])
 
static bool ui_but_isect_pie_seg (const uiBlock *block, const uiBut *but)
 
bool ui_but_contains_pt (const uiBut *but, float mx, float my)
 
bool ui_but_contains_rect (const uiBut *but, const rctf *rect)
 
bool ui_but_contains_point_px (const uiBut *but, const ARegion *region, int x, int y)
 
bool ui_but_contains_point_px_icon (const uiBut *but, ARegion *region, const wmEvent *event)
 
uiButui_but_find_mouse_over_ex (const ARegion *region, const int x, const int y, const bool labeledit)
 
uiButui_but_find_mouse_over (const ARegion *region, const wmEvent *event)
 
uiButui_but_find_rect_over (const struct ARegion *region, const rcti *rect_px)
 
uiButui_list_find_mouse_over_ex (ARegion *region, int x, int y)
 
uiButui_list_find_mouse_over (ARegion *region, const wmEvent *event)
 
Button (#uiBut) Relations
uiButui_but_prev (uiBut *but)
 
uiButui_but_next (uiBut *but)
 
uiButui_but_first (uiBlock *block)
 
uiButui_but_last (uiBlock *block)
 
bool ui_but_is_cursor_warp (const uiBut *but)
 
bool ui_but_contains_password (const uiBut *but)
 
Button (#uiBut) Text
size_t ui_but_drawstr_len_without_sep_char (const uiBut *but)
 
size_t ui_but_tip_len_only_first_line (const uiBut *but)
 
Block (#uiBlock) State
bool ui_block_is_menu (const uiBlock *block)
 
bool ui_block_is_popover (const uiBlock *block)
 
bool ui_block_is_pie_menu (const uiBlock *block)
 
bool ui_block_is_popup_any (const uiBlock *block)
 
static const uiButui_but_next_non_separator (const uiBut *but)
 
bool UI_block_is_empty_ex (const uiBlock *block, const bool skip_title)
 
bool UI_block_is_empty (const uiBlock *block)
 
bool UI_block_can_add_separator (const uiBlock *block)
 
Block (#uiBlock) Spatial
uiBlockui_block_find_mouse_over_ex (const ARegion *region, const int x, const int y, bool only_clip)
 
uiBlockui_block_find_mouse_over (const ARegion *region, const wmEvent *event, bool only_clip)
 
Region (#ARegion) State
uiButui_region_find_active_but (ARegion *region)
 
uiButui_region_find_first_but_test_flag (ARegion *region, int flag_include, int flag_exclude)
 
Region (#ARegion) Spatial
bool ui_region_contains_point_px (const ARegion *region, int x, int y)
 
bool ui_region_contains_rect_px (const ARegion *region, const rcti *rect_px)
 
Screen (#bScreen) Spatial
ARegionui_screen_region_find_mouse_over_ex (bScreen *screen, int x, int y)
 
ARegionui_screen_region_find_mouse_over (bScreen *screen, const wmEvent *event)
 
Manage Internal State
void ui_interface_tag_script_reload_queries (void)
 

Button (#uiBut) State

static wmOperatorTypeg_ot_tool_set_by_id = NULL
 
bool ui_but_is_editable (const uiBut *but)
 
bool ui_but_is_editable_as_text (const uiBut *but)
 
bool ui_but_is_toggle (const uiBut *but)
 
bool ui_but_is_interactive (const uiBut *but, const bool labeledit)
 
bool UI_but_is_utf8 (const uiBut *but)
 
bool ui_but_is_popover_once_compat (const uiBut *but)
 
bool ui_but_has_array_value (const uiBut *but)
 
bool UI_but_is_tool (const uiBut *but)
 
bool UI_but_has_tooltip_label (const uiBut *but)
 
int ui_but_icon (const uiBut *but)
 

Detailed Description

Utilities to inspect the interface, extract information.

Definition in file interface_query.c.

Function Documentation

◆ UI_block_can_add_separator()

bool UI_block_can_add_separator ( const uiBlock block)

◆ ui_block_find_mouse_over()

uiBlock* ui_block_find_mouse_over ( const ARegion region,
const wmEvent event,
bool  only_clip 
)

Definition at line 576 of file interface_query.c.

References ui_block_find_mouse_over_ex(), wmEvent::x, and wmEvent::y.

◆ ui_block_find_mouse_over_ex()

uiBlock* ui_block_find_mouse_over_ex ( const ARegion region,
const int  x,
const int  y,
bool  only_clip 
)

◆ UI_block_is_empty()

bool UI_block_is_empty ( const uiBlock block)

Definition at line 533 of file interface_query.c.

References UI_block_is_empty_ex().

◆ UI_block_is_empty_ex()

bool UI_block_is_empty_ex ( const uiBlock block,
const bool  skip_title 
)

◆ ui_block_is_menu()

bool ui_block_is_menu ( const uiBlock block)

◆ ui_block_is_pie_menu()

bool ui_block_is_pie_menu ( const uiBlock block)

◆ ui_block_is_popover()

bool ui_block_is_popover ( const uiBlock block)

Definition at line 494 of file interface_query.c.

References uiBlock::flag, and UI_BLOCK_POPOVER.

Referenced by ui_block_is_popup_any(), UI_but_has_tooltip_label(), and ui_def_but().

◆ ui_block_is_popup_any()

bool ui_block_is_popup_any ( const uiBlock block)

◆ ui_but_contains_password()

bool ui_but_contains_password ( const uiBut but)

Definition at line 446 of file interface_query.c.

References PROP_PASSWORD, RNA_property_subtype(), and uiBut::rnaprop.

Referenced by ui_but_copy().

◆ ui_but_contains_point_px()

bool ui_but_contains_point_px ( const uiBut but,
const ARegion region,
int  x,
int  y 
)

◆ ui_but_contains_point_px_icon()

bool ui_but_contains_point_px_icon ( const uiBut but,
ARegion region,
const wmEvent event 
)

◆ ui_but_contains_pt()

bool ui_but_contains_pt ( const uiBut but,
float  mx,
float  my 
)

◆ ui_but_contains_rect()

bool ui_but_contains_rect ( const uiBut but,
const rctf rect 
)

Definition at line 217 of file interface_query.c.

References BLI_rctf_isect(), NULL, and uiBut::rect.

Referenced by ui_but_find_rect_over().

◆ ui_but_drawstr_len_without_sep_char()

size_t ui_but_drawstr_len_without_sep_char ( const uiBut but)

Definition at line 457 of file interface_query.c.

References uiBut::drawstr, uiBut::flag, NULL, UI_BUT_HAS_SEP_CHAR, and UI_SEP_CHAR.

Referenced by ui_apply_but_undo().

◆ ui_but_find_mouse_over()

uiBut* ui_but_find_mouse_over ( const ARegion region,
const wmEvent event 
)

Definition at line 310 of file interface_query.c.

References wmEvent::ctrl, ui_but_find_mouse_over_ex(), wmEvent::x, and wmEvent::y.

◆ ui_but_find_mouse_over_ex()

uiBut* ui_but_find_mouse_over_ex ( const ARegion region,
const int  x,
const int  y,
const bool  labeledit 
)

◆ ui_but_find_rect_over()

uiBut* ui_but_find_rect_over ( const struct ARegion region,
const rcti rect_px 
)

◆ ui_but_first()

uiBut* ui_but_first ( uiBlock block)

◆ ui_but_has_array_value()

bool ui_but_has_array_value ( const uiBut but)

◆ UI_but_has_tooltip_label()

bool UI_but_has_tooltip_label ( const uiBut but)

◆ ui_but_icon()

int ui_but_icon ( const uiBut but)

◆ ui_but_is_cursor_warp()

bool ui_but_is_cursor_warp ( const uiBut but)

◆ ui_but_is_editable()

bool ui_but_is_editable ( const uiBut but)

◆ ui_but_is_editable_as_text()

bool ui_but_is_editable_as_text ( const uiBut but)

◆ ui_but_is_interactive()

bool ui_but_is_interactive ( const uiBut but,
const bool  labeledit 
)

Can we mouse over the button or is it hidden/disabled/layout.

Note
ctrl is kind of a hack currently, so that non-embossed UI_BTYPE_TEXT button behaves as a label when ctrl is not pressed.

Definition at line 78 of file interface_query.c.

References uiBut::dragpoin, ELEM, uiBut::emboss, uiBut::flag, NULL, uiBut::type, UI_BTYPE_LABEL, UI_BTYPE_LISTBOX, UI_BTYPE_LISTROW, UI_BTYPE_ROUNDBOX, UI_BTYPE_SEPR, UI_BTYPE_SEPR_LINE, UI_BTYPE_TEXT, UI_EMBOSS_NONE, UI_EMBOSS_NONE_OR_STATUS, UI_HIDDEN, and UI_SCROLLED.

Referenced by ui_but_find_mouse_over_ex(), ui_but_find_rect_over(), ui_drag_toggle_set_xy_xy(), and ui_multibut_states_tag().

◆ ui_but_is_popover_once_compat()

bool ui_but_is_popover_once_compat ( const uiBut but)

◆ ui_but_is_toggle()

bool ui_but_is_toggle ( const uiBut but)

◆ UI_but_is_tool()

bool UI_but_is_tool ( const uiBut but)

◆ UI_but_is_utf8()

bool UI_but_is_utf8 ( const uiBut but)

◆ ui_but_isect_pie_seg()

static bool ui_but_isect_pie_seg ( const uiBlock block,
const uiBut but 
)
static

◆ ui_but_last()

uiBut* ui_but_last ( uiBlock block)

Definition at line 414 of file interface_query.c.

References uiBlock::buttons, ListBase::last, NULL, uiBut::prev, and ui_but_is_editable().

Referenced by ui_handle_menu_event().

◆ ui_but_next()

uiBut* ui_but_next ( uiBut but)

Definition at line 393 of file interface_query.c.

References uiBut::next, NULL, and ui_but_is_editable().

Referenced by ui_handle_menu_event().

◆ ui_but_next_non_separator()

static const uiBut* ui_but_next_non_separator ( const uiBut but)
static

Definition at line 509 of file interface_query.c.

References ELEM, uiBut::next, NULL, uiBut::type, UI_BTYPE_SEPR, and UI_BTYPE_SEPR_LINE.

Referenced by UI_block_is_empty_ex().

◆ ui_but_pie_dir()

void ui_but_pie_dir ( RadialDirection  dir,
float  vec[2] 
)

◆ ui_but_prev()

uiBut* ui_but_prev ( uiBut but)

Definition at line 382 of file interface_query.c.

References NULL, uiBut::prev, and ui_but_is_editable().

Referenced by ui_handle_menu_event().

◆ ui_but_tip_len_only_first_line()

size_t ui_but_tip_len_only_first_line ( const uiBut but)

Definition at line 468 of file interface_query.c.

References NULL, and uiBut::tip.

Referenced by ui_apply_but_undo().

◆ ui_interface_tag_script_reload_queries()

void ui_interface_tag_script_reload_queries ( void  )

Definition at line 700 of file interface_query.c.

References g_ot_tool_set_by_id, and NULL.

Referenced by UI_interface_tag_script_reload().

◆ ui_list_find_mouse_over()

uiBut* ui_list_find_mouse_over ( ARegion region,
const wmEvent event 
)

Definition at line 371 of file interface_query.c.

References ui_list_find_mouse_over_ex(), wmEvent::x, and wmEvent::y.

◆ ui_list_find_mouse_over_ex()

uiBut* ui_list_find_mouse_over_ex ( ARegion region,
int  x,
int  y 
)

◆ ui_region_contains_point_px()

bool ui_region_contains_point_px ( const ARegion region,
int  x,
int  y 
)

◆ ui_region_contains_rect_px()

bool ui_region_contains_rect_px ( const ARegion region,
const rcti rect_px 
)

◆ ui_region_find_active_but()

uiBut* ui_region_find_active_but ( ARegion region)

◆ ui_region_find_first_but_test_flag()

uiBut* ui_region_find_first_but_test_flag ( ARegion region,
int  flag_include,
int  flag_exclude 
)

Definition at line 600 of file interface_query.c.

References LISTBASE_FOREACH, NULL, and ARegion::uiblocks.

Referenced by ui_handle_menu_event().

◆ ui_screen_region_find_mouse_over()

ARegion* ui_screen_region_find_mouse_over ( bScreen screen,
const wmEvent event 
)

Definition at line 689 of file interface_query.c.

References ui_screen_region_find_mouse_over_ex(), wmEvent::x, and wmEvent::y.

◆ ui_screen_region_find_mouse_over_ex()

ARegion* ui_screen_region_find_mouse_over_ex ( bScreen screen,
int  x,
int  y 
)

Check if the cursor is over any popups.

Definition at line 675 of file interface_query.c.

References BLI_rcti_isect_pt(), LISTBASE_FOREACH, NULL, bScreen::regionbase, ui_region_winrct_get_no_margin(), x, and y.

Referenced by ui_screen_region_find_mouse_over().

Variable Documentation

◆ g_ot_tool_set_by_id

wmOperatorType* g_ot_tool_set_by_id = NULL
static

Definition at line 140 of file interface_query.c.

Referenced by UI_but_is_tool(), and ui_interface_tag_script_reload_queries().