Blender V4.3
interface_query.cc File Reference
#include "BLI_listbase.h"
#include "BLI_math_rotation.h"
#include "BLI_math_vector.h"
#include "BLI_rect.h"
#include "BLI_string.h"
#include "BLI_utildefines.h"
#include "DNA_screen_types.h"
#include "UI_interface.hh"
#include "UI_view2d.hh"
#include "RNA_access.hh"
#include "interface_intern.hh"
#include "UI_abstract_view.hh"
#include "WM_api.hh"
#include "WM_types.hh"

Go to the source code of this file.

Classes

struct  ListRowFindIndexData
 

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, const int xy[2])
 
bool ui_but_contains_point_px_icon (const uiBut *but, ARegion *region, const wmEvent *event)
 
static uiButui_but_find (const ARegion *region, const uiButFindPollFn find_poll, const void *find_custom_data)
 
uiButui_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)
 
uiButui_but_find_mouse_over (const ARegion *region, const wmEvent *event)
 
uiButui_but_find_rect_over (const ARegion *region, const rcti *rect_px)
 
uiButui_list_find_mouse_over_ex (const ARegion *region, const int xy[2])
 
uiButui_list_find_mouse_over (const ARegion *region, const wmEvent *event)
 
uiListUI_list_find_mouse_over (const ARegion *region, const wmEvent *event)
 
static bool ui_list_contains_row (const uiBut *listbox_but, const uiBut *listrow_but)
 
static bool ui_but_is_listbox_with_row (const uiBut *but, const void *customdata)
 
uiButui_list_find_from_row (const ARegion *region, const uiBut *row_but)
 
static bool ui_but_is_listrow (const uiBut *but, const void *)
 
uiButui_list_row_find_mouse_over (const ARegion *region, const int xy[2])
 
static bool ui_but_is_listrow_at_index (const uiBut *but, const void *customdata)
 
uiButui_list_row_find_index (const ARegion *region, const int index, uiBut *listbox)
 
static bool ui_but_is_view_item_fn (const uiBut *but, const void *)
 
uiButui_view_item_find_mouse_over (const ARegion *region, const int xy[2])
 
static bool ui_but_is_active_view_item (const uiBut *but, const void *)
 
uiButui_view_item_find_active (const ARegion *region)
 
uiButui_view_item_find_search_highlight (const ARegion *region)
 
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)
 
blender::StringRef ui_but_drawstr_without_sep_char (const uiBut *but)
 
size_t ui_but_tip_len_only_first_line (const uiBut *but)
 
Block (#uiBlock) State
uiButui_block_active_but_get (const uiBlock *block)
 
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)
 
bool UI_block_has_active_default_button (const uiBlock *block)
 
Block (#uiBlock) Spatial
uiBlockui_block_find_mouse_over_ex (const ARegion *region, const int xy[2], 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, const int xy[2])
 
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, const int xy[2])
 
ARegionui_screen_region_find_mouse_over (bScreen *screen, const wmEvent *event)
 
Manage Internal State
void ui_interface_tag_script_reload_queries ()
 

Button (#uiBut) State

static wmOperatorTypeg_ot_tool_set_by_id = nullptr
 
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_ex (const uiBut *but, const bool labeledit, const bool for_tooltip)
 
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.cc.

Function Documentation

◆ ui_block_active_but_get()

uiBut * ui_block_active_but_get ( const uiBlock * block)

◆ 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 748 of file interface_query.cc.

References ui_block_find_mouse_over_ex(), and wmEvent::xy.

◆ ui_block_find_mouse_over_ex()

uiBlock * ui_block_find_mouse_over_ex ( const ARegion * region,
const int xy[2],
bool only_clip )

◆ UI_block_has_active_default_button()

bool UI_block_has_active_default_button ( const uiBlock * block)

Return true when the block has a default button. Use this for popups to detect when pressing "Return" will run an action.

Definition at line 712 of file interface_query.cc.

References uiBlock::buttons, LISTBASE_FOREACH, UI_BUT_ACTIVE_DEFAULT, and UI_HIDDEN.

Referenced by UI_popup_block_template_confirm(), and wm_block_dialog_create().

◆ UI_block_is_empty()

bool UI_block_is_empty ( const uiBlock * block)

Definition at line 698 of file interface_query.cc.

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()

◆ ui_block_is_pie_menu()

◆ ui_block_is_popover()

bool ui_block_is_popover ( const uiBlock * block)

Definition at line 659 of file interface_query.cc.

References uiBlock::flag, and UI_BLOCK_POPOVER.

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

◆ ui_block_is_popup_any()

◆ ui_but_contains_password()

bool ui_but_contains_password ( const uiBut * but)

Definition at line 598 of file interface_query.cc.

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,
const int xy[2] )

◆ ui_but_contains_point_px_icon()

◆ 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 244 of file interface_query.cc.

References BLI_rctf_isect(), and uiBut::rect.

Referenced by ui_but_find_rect_over(), and UI_key_event_operator_string().

◆ ui_but_drawstr_len_without_sep_char()

size_t ui_but_drawstr_len_without_sep_char ( const uiBut * but)

◆ ui_but_drawstr_without_sep_char()

◆ ui_but_find()

static uiBut * ui_but_find ( const ARegion * region,
const uiButFindPollFn find_poll,
const void * find_custom_data )
static

◆ ui_but_find_mouse_over()

◆ ui_but_find_mouse_over_ex()

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 )

◆ ui_but_find_rect_over()

◆ 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()

◆ ui_but_is_active_view_item()

static bool ui_but_is_active_view_item ( const uiBut * but,
const void *  )
static

◆ ui_but_is_cursor_warp()

◆ ui_but_is_editable()

◆ 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 )

◆ ui_but_is_interactive_ex()

bool ui_but_is_interactive_ex ( const uiBut * but,
const bool labeledit,
const bool for_tooltip )

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 65 of file interface_query.cc.

References ELEM, uiBut::emboss, uiBut::flag, blender::ui::AbstractViewItem::is_interactive(), uiBut::tip, uiBut::tip_func, uiBut::type, UI_BTYPE_LABEL, UI_BTYPE_LISTBOX, UI_BTYPE_LISTROW, UI_BTYPE_PREVIEW_TILE, UI_BTYPE_ROUNDBOX, UI_BTYPE_SEPR, UI_BTYPE_SEPR_LINE, UI_BTYPE_TEXT, UI_BTYPE_VIEW_ITEM, ui_but_drag_is_draggable(), UI_EMBOSS_NONE, UI_EMBOSS_NONE_OR_STATUS, UI_HIDDEN, UI_SCROLLED, and uiButViewItem::view_item.

Referenced by ui_but_find_mouse_over_ex(), and ui_but_is_interactive().

◆ ui_but_is_listbox_with_row()

static bool ui_but_is_listbox_with_row ( const uiBut * but,
const void * customdata )
static

Definition at line 446 of file interface_query.cc.

References uiBut::type, UI_BTYPE_LISTBOX, and ui_list_contains_row().

Referenced by ui_list_find_from_row().

◆ ui_but_is_listrow()

static bool ui_but_is_listrow ( const uiBut * but,
const void *  )
static

Definition at line 457 of file interface_query.cc.

References uiBut::type, and UI_BTYPE_LISTROW.

Referenced by ui_but_is_listrow_at_index(), and ui_list_row_find_mouse_over().

◆ ui_but_is_listrow_at_index()

static bool ui_but_is_listrow_at_index ( const uiBut * but,
const void * customdata )
static

◆ ui_but_is_popover_once_compat()

bool ui_but_is_popover_once_compat ( const uiBut * but)

◆ ui_but_is_toggle()

◆ UI_but_is_tool()

◆ UI_but_is_utf8()

◆ ui_but_is_view_item_fn()

static bool ui_but_is_view_item_fn ( const uiBut * but,
const void *  )
static

Definition at line 489 of file interface_query.cc.

References uiBut::type, and UI_BTYPE_VIEW_ITEM.

Referenced by ui_view_item_find_mouse_over().

◆ ui_but_isect_pie_seg()

◆ ui_but_last()

uiBut * ui_but_last ( uiBlock * block)

◆ ui_but_next()

uiBut * ui_but_next ( uiBut * but)

Definition at line 546 of file interface_query.cc.

References uiBut::next, 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 674 of file interface_query.cc.

References ELEM, uiBut::next, 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 535 of file interface_query.cc.

References 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 626 of file interface_query.cc.

References BLI_strchr_or_end(), and uiBut::tip.

Referenced by ui_apply_but_undo().

◆ ui_interface_tag_script_reload_queries()

void ui_interface_tag_script_reload_queries ( )

Definition at line 872 of file interface_query.cc.

References g_ot_tool_set_by_id.

Referenced by UI_interface_tag_script_reload().

◆ ui_list_contains_row()

static bool ui_list_contains_row ( const uiBut * listbox_but,
const uiBut * listrow_but )
static

◆ ui_list_find_from_row()

uiBut * ui_list_find_from_row ( const ARegion * region,
const uiBut * row_but )

Definition at line 452 of file interface_query.cc.

References ui_but_find(), and ui_but_is_listbox_with_row().

Referenced by ui_apply_but_LISTROW().

◆ UI_list_find_mouse_over()

uiList * UI_list_find_mouse_over ( const ARegion * region,
const wmEvent * event )

◆ ui_list_find_mouse_over()

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

◆ ui_list_find_mouse_over_ex()

uiBut * ui_list_find_mouse_over_ex ( const ARegion * region,
const int xy[2] )

◆ ui_list_row_find_index()

uiBut * ui_list_row_find_index ( const ARegion * region,
const int index,
uiBut * listbox )

◆ ui_list_row_find_mouse_over()

uiBut * ui_list_row_find_mouse_over ( const ARegion * region,
const int xy[2] )

Definition at line 462 of file interface_query.cc.

References ui_but_find_mouse_over_ex(), ui_but_is_listrow(), and xy.

◆ ui_region_contains_point_px()

◆ ui_region_contains_rect_px()

bool ui_region_contains_rect_px ( const ARegion * region,
const rcti * rect_px )

◆ ui_region_find_active_but()

◆ 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 771 of file interface_query.cc.

References LISTBASE_FOREACH.

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 861 of file interface_query.cc.

References ui_screen_region_find_mouse_over_ex(), and wmEvent::xy.

Referenced by ui_handler_region_menu().

◆ ui_screen_region_find_mouse_over_ex()

ARegion * ui_screen_region_find_mouse_over_ex ( bScreen * screen,
const int xy[2] )

◆ ui_view_item_find_active()

uiBut * ui_view_item_find_active ( const ARegion * region)

◆ ui_view_item_find_mouse_over()

uiBut * ui_view_item_find_mouse_over ( const ARegion * region,
const int xy[2] )

Definition at line 494 of file interface_query.cc.

References ui_but_find_mouse_over_ex(), ui_but_is_view_item_fn(), and xy.

◆ ui_view_item_find_search_highlight()

uiBut * ui_view_item_find_search_highlight ( const ARegion * region)

Variable Documentation

◆ g_ot_tool_set_by_id

wmOperatorType* g_ot_tool_set_by_id = nullptr
static

Definition at line 135 of file interface_query.cc.

Referenced by UI_but_is_tool(), and ui_interface_tag_script_reload_queries().