141 const wmGizmo *gz_a = gz_a_ptr;
142 const wmGizmo *gz_b = gz_b_ptr;
154 const wmGizmo *gz_a = gz_a_ptr;
155 const wmGizmo *gz_b = gz_b_ptr;
168 const int event_modifier,
169 int *r_gzgroup_keymap_uses_modifier)
178 if (*r_gzgroup_keymap_uses_modifier == -1) {
182 if (*r_gzgroup_keymap_uses_modifier == 0) {
192 const int event_modifier,
196 int gzgroup_keymap_uses_modifier = -1;
202 wm, gzgroup, gz, event_modifier, &gzgroup_keymap_uses_modifier)) {
206 if ((*r_part = gz->type->test_select(
C, gz, mval)) != -1) {
217 const int event_modifier,
220 int gzgroup_keymap_uses_modifier = -1;
224 (gz->type->draw_select || gz->type->test_select)) ||
228 wm, gzgroup, gz, event_modifier, &gzgroup_keymap_uses_modifier)) {
273 if (
area->runtime.tool == tref) {
276 if (gzmap && gzmap->
type == gzmap_type) {
278 for (gzgroup = gzmap->
groups.
first; gzgroup; gzgroup = gzgroup_next) {
279 gzgroup_next = gzgroup->
next;
280 if (gzgroup->
type == gzgt) {
339 if (extend ==
false && deselect ==
false && toggle ==
false) {
351 deselect = is_selected;
377 ot->
name =
"Gizmo Select";
379 ot->
idname =
"GIZMOGROUP_OT_gizmo_select";
414 if (gzop && gzop->
type) {
472 bool clear_modal =
true;
486 switch (event->
val) {
521 short event_modal_val = 0;
524 event_modal_val = evil_event->
val;
529 int modal_retval = modal_fn(
C, gz, event, mtweak->
flag);
531 if (event_modal_val != 0) {
533 evil_event->
val = event_modal_val;
589 mtweak->
gzmap = gzmap;
604 ot->
idname =
"GIZMOGROUP_OT_gizmo_tweak";
632 STRNCPY(name,
"Generic Gizmo Tweak Modal Map");
800 "GIZMOGROUP_OT_gizmo_tweak",
802 .type = action_mouse,
803 .value = action_mouse_val,
808 "GIZMOGROUP_OT_gizmo_tweak",
810 .type = select_tweak,
811 .value = select_tweak_val,
819 "GIZMOGROUP_OT_gizmo_select",
821 .type = select_mouse,
822 .value = select_mouse_val,
830 "GIZMOGROUP_OT_gizmo_select",
832 .type = select_mouse,
833 .value = select_mouse_val,
865 const char *
idname =
"Generic Gizmo";
875 const char *
idname =
"Generic Gizmo Select";
885 const char *
idname =
"Generic Gizmo Drag";
895 const char *
idname =
"Generic Gizmo Click Drag";
905 const char *
idname =
"Generic Gizmo Maybe Drag";
924 if (gzgt_ref->type == gzgt) {
936 if (
STREQ(idname, gzgt_ref->type->idname)) {
954 gzgt_ref->
type = gzgt;
978 ListBase *lb = (sl ==
area->spacedata.first) ? &
area->regionbase : &sl->regionbase;
981 if (gzmap && gzmap->
type == gzmap_type) {
1002 if (gzgroup_iter->type == gzgt) {
1003 if (gzgroup_iter != gzgroup) {
1030 ListBase *lb = (sl ==
area->spacedata.first) ? &
area->regionbase : &sl->regionbase;
1033 if (gzmap && gzmap->
type == gzmap_type) {
1035 for (gzgroup = gzmap->
groups.
first; gzgroup; gzgroup = gzgroup_next) {
1036 gzgroup_next = gzgroup->
next;
1037 if (gzgroup->
type == gzgt) {
1114 if (gzgt_ref ==
NULL) {
1198 if (gzmap && gzmap->
type == gzmap_type) {
1200 if (gzgroup->type == gzgt) {
struct WorkSpace * CTX_wm_workspace(const bContext *C)
struct wmWindowManager * CTX_wm_manager(const bContext *C)
struct ARegion * CTX_wm_region(const bContext *C)
struct wmWindow * CTX_wm_window(const bContext *C)
void IDP_MergeGroup(struct IDProperty *dest, const struct IDProperty *src, bool do_overwrite) ATTR_NONNULL()
void BKE_reports_clear(ReportList *reports)
bool BKE_workspace_owner_id_check(const struct WorkSpace *workspace, const char *owner_id) ATTR_NONNULL()
#define BLI_assert_unreachable()
#define BLI_buffer_append(buffer_, type_, val_)
BLI_INLINE bool BLI_listbase_is_empty(const struct ListBase *lb)
#define LISTBASE_FOREACH(type, var, list)
BLI_INLINE void BLI_listbase_clear(struct ListBase *lb)
void BLI_addtail(struct ListBase *listbase, void *vlink) ATTR_NONNULL(1)
void BLI_remlink(struct ListBase *listbase, void *vlink) ATTR_NONNULL(1)
int BLI_findindex(const struct ListBase *listbase, const void *vlink) ATTR_WARN_UNUSED_RESULT ATTR_NONNULL(1)
void * BLI_findptr(const struct ListBase *listbase, const void *ptr, int offset) ATTR_WARN_UNUSED_RESULT ATTR_NONNULL(1)
bool BLI_rcti_isect_pt_v(const struct rcti *rect, const int xy[2])
#define STRNCPY(dst, src)
#define UNUSED_VARS_NDEBUG(...)
void BPY_DECREF_RNA_INVALIDATE(void *pyob_ptr)
void ED_region_tag_redraw_editor_overlays(struct ARegion *region)
void ED_undo_pop_op(struct bContext *C, struct wmOperator *op)
_GL_VOID GLfloat value _GL_VOID_RET _GL_VOID const GLuint GLboolean *residences _GL_BOOL_RET _GL_VOID GLsizei GLfloat GLfloat GLfloat GLfloat const GLubyte *bitmap _GL_VOID_RET _GL_VOID GLenum type
Read Guarded memory(de)allocation.
@ WM_GIZMOMAP_DRAWSTEP_3D
@ WM_GIZMOMAP_DRAWSTEP_2D
@ WM_GIZMOMAPTYPE_KEYMAP_INIT
@ WM_GIZMOGROUP_INIT_REFRESH
@ WM_GIZMOGROUP_INIT_SETUP
@ WM_GIZMOGROUPTYPE_TOOL_INIT
@ WM_GIZMOGROUPTYPE_DELAY_REFRESH_FOR_TWEAK
@ WM_GIZMOGROUPTYPE_SELECT
void(* MEM_freeN)(void *vmemh)
void *(* MEM_callocN)(size_t len, const char *str)
void *(* MEM_mallocN)(size_t len, const char *str)
static void area(int d1, int d2, int e1, int e2, float weights[2])
void RNA_boolean_set(PointerRNA *ptr, const char *name, bool value)
bool RNA_boolean_get(PointerRNA *ptr, const char *name)
struct wmGizmoMap * gizmo_map
struct wmGizmoGroupType * type
wmGizmoGroupFnSetupKeymap setup_keymap
struct wmKeyConfig * keyconf
wmGizmoGroupFnRefresh refresh
wmGizmoGroupFnInvokePrepare invoke_prepare
eWM_GizmoFlagGroupTypeFlag flag
eWM_GizmoFlagMapTypeUpdateFlag type_update_flag
struct wmGizmoMapType_Params gzmap_params
struct wmGizmoGroup * next
struct wmGizmoGroupType * type
eWM_GizmoFlagGroupInitFlag init_flag
void(* customdata_free)(void *)
struct wmGizmoMap * parent_gzmap
struct ReportList * reports
union wmGizmoGroup::@1186 hide
uint delay_refresh_for_tweak
struct wmGizmoMapType * type
struct wmGizmo * highlight
struct wmGizmoMapSelectState select
struct wmGizmoMap::@1182 gzmap_context
Gizmo map runtime context.
struct wmOperatorType * type
struct wmGizmoGroup * parent_gzgroup
union wmGizmo::@1184 temp
wmGizmoFnModal custom_modal
const struct wmGizmoType * type
int(* invoke)(struct bContext *, struct wmOperator *, const struct wmEvent *) ATTR_WARN_UNUSED_RESULT
int(* modal)(struct bContext *, struct wmOperator *, const struct wmEvent *) ATTR_WARN_UNUSED_RESULT
struct wmKeyConfig * defaultconf
struct wmEvent * eventstate
char event_queue_check_drag
#define USER_LMOUSESELECT
void WM_operator_free_all_after(wmWindowManager *wm, struct wmOperator *op)
bool WM_event_is_mouse_drag(const wmEvent *event)
int WM_userdef_event_type_from_keymap_type(int kmitype)
wmEventHandler_Op * WM_event_add_modal_handler(bContext *C, wmOperator *op)
bool wm_gizmo_select_and_highlight(bContext *C, wmGizmoMap *gzmap, wmGizmo *gz)
void WM_gizmo_free(wmGizmo *gz)
int WM_gizmo_operator_invoke(bContext *C, wmGizmo *gz, wmGizmoOpElem *gzop, const wmEvent *event)
bool WM_gizmo_select_unlink(wmGizmoMap *gzmap, wmGizmo *gz)
struct wmGizmoOpElem * WM_gizmo_operator_get(wmGizmo *gz, int part_index)
bool WM_gizmo_select_set(wmGizmoMap *gzmap, wmGizmo *gz, bool select)
int(* wmGizmoFnModal)(struct bContext *, struct wmGizmo *, const struct wmEvent *, eWM_GizmoFlagTweak)
void WM_gizmo_group_refresh(const bContext *C, wmGizmoGroup *gzgroup)
void WM_gizmomaptype_group_init_runtime_keymap(const Main *bmain, wmGizmoGroupType *gzgt)
int WM_gizmo_cmp_temp_fl_reverse(const void *gz_a_ptr, const void *gz_b_ptr)
wmKeyMap * WM_gizmogroup_setup_keymap_generic_drag(const wmGizmoGroupType *UNUSED(gzgt), wmKeyConfig *kc)
wmGizmoGroup * wm_gizmogroup_new_from_type(wmGizmoMap *gzmap, wmGizmoGroupType *gzgt)
struct wmGizmoGroupTypeRef * WM_gizmomaptype_group_find_ptr(struct wmGizmoMapType *gzmap_type, const wmGizmoGroupType *gzgt)
void WM_gizmomaptype_group_init_runtime(const Main *bmain, wmGizmoMapType *gzmap_type, wmGizmoGroupType *gzgt)
wmGizmoGroupTypeRef * WM_gizmomaptype_group_link(wmGizmoMapType *gzmap_type, const char *idname)
struct wmKeyMap * WM_gizmo_keymap_generic_maybe_drag(wmWindowManager *wm)
void wm_gizmogroup_gizmo_register(wmGizmoGroup *gzgroup, wmGizmo *gz)
void wm_gizmogrouptype_setup_keymap(wmGizmoGroupType *gzgt, wmKeyConfig *keyconf)
void WM_gizmo_group_type_reinit_ptr_ex(struct Main *bmain, wmGizmoGroupType *gzgt, wmGizmoMapType *gzmap_type)
void WM_gizmogroup_ensure_init(const bContext *C, wmGizmoGroup *gzgroup)
bool WM_gizmo_group_type_ensure_ptr(wmGizmoGroupType *gzgt)
static int gizmo_tweak_modal(bContext *C, wmOperator *op, const wmEvent *event)
static wmKeyMap * WM_gizmogroup_keymap_template_select_ex(wmKeyConfig *kc, const char *name, const struct wmGizmoMapType_Params *params)
bool WM_gizmo_group_type_ensure_ptr_ex(wmGizmoGroupType *gzgt, wmGizmoMapType *gzmap_type)
struct wmKeyMap * WM_gizmo_keymap_generic_drag_with_keyconfig(wmKeyConfig *kc)
void WM_gizmo_group_type_unlink_delayed_ptr(wmGizmoGroupType *gzgt)
void WM_gizmo_group_remove_by_tool(bContext *C, Main *bmain, const wmGizmoGroupType *gzgt, const bToolRef *tref)
void WM_gizmo_group_type_add_ptr(wmGizmoGroupType *gzgt)
void WM_gizmo_group_type_remove_ptr_ex(struct Main *bmain, wmGizmoGroupType *gzgt, wmGizmoMapType *gzmap_type)
struct GizmoTweakData GizmoTweakData
void WM_gizmo_group_type_remove(struct Main *bmain, const char *idname)
wmKeyMap * wm_gizmogroup_tweak_modal_keymap(wmKeyConfig *keyconf)
bool wm_gizmogroup_is_visible_in_drawstep(const wmGizmoGroup *gzgroup, const eWM_GizmoFlagMapDrawStep drawstep)
struct wmKeyMap * WM_gizmo_keymap_generic_click_drag(wmWindowManager *wm)
static bool gizmo_tweak_start_and_finish(bContext *C, wmGizmoMap *gzmap, wmGizmo *gz, const wmEvent *event, bool *r_is_modal)
void WM_gizmo_group_unlink_delayed_ptr_from_space(wmGizmoGroupType *gzgt, wmGizmoMapType *gzmap_type, ScrArea *area)
void WM_gizmomaptype_group_free(wmGizmoGroupTypeRef *gzgt_ref)
void WM_gizmo_group_type_add(const char *idname)
void WM_gizmo_group_type_reinit(struct Main *bmain, const char *idname)
static int gizmo_tweak_invoke(bContext *C, wmOperator *op, const wmEvent *event)
static bool gizmo_tweak_start(bContext *C, wmGizmoMap *gzmap, wmGizmo *gz, const wmEvent *event)
bool WM_gizmo_group_type_ensure(const char *idname)
struct wmGizmoGroupTypeRef * WM_gizmomaptype_group_find(struct wmGizmoMapType *gzmap_type, const char *idname)
void wm_gizmogroup_intersectable_gizmos_to_list(wmWindowManager *wm, const wmGizmoGroup *gzgroup, const int event_modifier, BLI_Buffer *visible_gizmos)
void WM_gizmo_group_type_reinit_ptr(struct Main *bmain, wmGizmoGroupType *gzgt)
void WM_gizmo_group_type_unlink_delayed(const char *idname)
void WM_gizmo_group_type_add_ptr_ex(wmGizmoGroupType *gzgt, wmGizmoMapType *gzmap_type)
wmGizmo * wm_gizmogroup_find_intersected_gizmo(wmWindowManager *wm, const wmGizmoGroup *gzgroup, bContext *C, const int event_modifier, const int mval[2], int *r_part)
struct wmKeyMap * WM_gizmo_keymap_generic_drag(wmWindowManager *wm)
wmKeyMap * WM_gizmogroup_setup_keymap_generic_maybe_drag(const wmGizmoGroupType *UNUSED(gzgt), wmKeyConfig *kc)
int WM_gizmo_cmp_temp_fl(const void *gz_a_ptr, const void *gz_b_ptr)
bool WM_gizmo_group_type_poll(const bContext *C, const wmGizmoGroupType *gzgt)
void GIZMOGROUP_OT_gizmo_select(wmOperatorType *ot)
void WM_gizmo_group_tag_remove(wmGizmoGroup *gzgroup)
struct wmKeyMap * WM_gizmo_keymap_generic_maybe_drag_with_keyconfig(wmKeyConfig *kc)
wmGizmoGroupTypeRef * WM_gizmomaptype_group_link_ptr(wmGizmoMapType *gzmap_type, wmGizmoGroupType *gzgt)
bool wm_gizmogroup_is_any_selected(const wmGizmoGroup *gzgroup)
void WM_gizmomaptype_group_unlink(bContext *C, Main *bmain, wmGizmoMapType *gzmap_type, const wmGizmoGroupType *gzgt)
struct wmKeyMap * WM_gizmo_keymap_generic_select_with_keyconfig(wmKeyConfig *kc)
static void gizmo_tweak_finish(bContext *C, wmOperator *op, const bool cancel, bool clear_modal)
static bool wm_gizmo_keymap_uses_event_modifier(wmWindowManager *wm, const wmGizmoGroup *gzgroup, wmGizmo *gz, const int event_modifier, int *r_gzgroup_keymap_uses_modifier)
struct wmKeyMap * WM_gizmo_keymap_generic_click_drag_with_keyconfig(wmKeyConfig *kc)
struct wmKeyMap * WM_gizmo_keymap_generic(wmWindowManager *wm)
static int gizmo_select_invoke(bContext *C, wmOperator *op, const wmEvent *UNUSED(event))
wmGizmoGroup * WM_gizmomaptype_group_init_runtime_with_region(wmGizmoMapType *gzmap_type, wmGizmoGroupType *gzgt, ARegion *region)
wmGizmoGroup * wm_gizmogroup_find_by_type(const wmGizmoMap *gzmap, const wmGizmoGroupType *gzgt)
void WM_gizmo_group_type_unlink_delayed_ptr_ex(wmGizmoGroupType *gzgt, wmGizmoMapType *gzmap_type)
wmKeyMap * WM_gizmogroup_setup_keymap_generic_select(const wmGizmoGroupType *UNUSED(gzgt), wmKeyConfig *kc)
struct wmKeyMap * WM_gizmo_keymap_generic_with_keyconfig(wmKeyConfig *kc)
void wm_gizmogroup_free(bContext *C, wmGizmoGroup *gzgroup)
wmKeyMap * WM_gizmogroup_setup_keymap_generic(const wmGizmoGroupType *UNUSED(gzgt), wmKeyConfig *kc)
struct wmKeyMap * WM_gizmo_keymap_generic_select(wmWindowManager *wm)
void GIZMOGROUP_OT_gizmo_tweak(wmOperatorType *ot)
void WM_gizmo_group_type_remove_ptr(struct Main *bmain, wmGizmoGroupType *gzgt)
wmGizmoGroupType * WM_gizmogrouptype_find(const char *idname, bool quiet)
@ TWEAK_MODAL_PRECISION_ON
@ TWEAK_MODAL_PRECISION_OFF
bool wm_gizmomap_deselect_all(struct wmGizmoMap *gzmap)
wmGizmoMapType * WM_gizmomaptype_find(const struct wmGizmoMapType_Params *gzmap_params)
void wm_gizmomap_modal_set(wmGizmoMap *gzmap, bContext *C, wmGizmo *gz, const wmEvent *event, bool enable)
eWM_GizmoFlagMapDrawStep WM_gizmomap_drawstep_from_gizmo_group(const wmGizmoGroup *gzgroup)
wmGizmoMapType * WM_gizmomaptype_ensure(const struct wmGizmoMapType_Params *gzmap_params)
wmGizmo * wm_gizmomap_highlight_get(wmGizmoMap *gzmap)
bool wm_gizmomap_highlight_set(wmGizmoMap *gzmap, const bContext *C, wmGizmo *gz, int part)
void WM_gizmomap_tag_refresh_drawstep(wmGizmoMap *gzmap, const eWM_GizmoFlagMapDrawStep drawstep)
void WM_gizmoconfig_update_tag_group_type_init(wmGizmoMapType *gzmap_type, wmGizmoGroupType *gzgt)
void WM_gizmoconfig_update_tag_group_type_remove(wmGizmoMapType *gzmap_type, wmGizmoGroupType *gzgt)
void WM_gizmoconfig_update_tag_group_remove(wmGizmoMap *gzmap)
wmKeyMap * WM_modalkeymap_find(wmKeyConfig *keyconf, const char *idname)
wmKeyMap * WM_keymap_ensure(wmKeyConfig *keyconf, const char *idname, int spaceid, int regionid)
void WM_modalkeymap_assign(wmKeyMap *km, const char *opname)
wmKeyMap * WM_keymap_active(const wmWindowManager *wm, wmKeyMap *keymap)
wmKeyMapItem * WM_modalkeymap_add_item(wmKeyMap *km, const KeyMapItem_Params *params, int value)
bool WM_keymap_remove(wmKeyConfig *keyconf, wmKeyMap *keymap)
wmKeyMapItem * WM_keymap_add_item(wmKeyMap *keymap, const char *idname, const KeyMapItem_Params *params)
wmKeyMap * WM_modalkeymap_ensure(wmKeyConfig *keyconf, const char *idname, const EnumPropertyItem *items)
bool WM_keymap_uses_event_modifier(const wmKeyMap *keymap, const int event_modifier)
void WM_operator_properties_mouse_select(wmOperatorType *ot)
wmOperator * WM_operator_last_redo(const bContext *C)