Keymap: gizmos now use a map that optionally activates on press

The legacy keymap now activates on press.
This commit is contained in:
Campbell Barton 2019-06-07 11:45:50 +10:00
parent 6bc761a12e
commit 6dd9e08051
14 changed files with 61 additions and 18 deletions

@ -56,6 +56,7 @@ def load():
use_mouse_emulate_3_button=prefs.inputs.use_mouse_emulate_3_button, use_mouse_emulate_3_button=prefs.inputs.use_mouse_emulate_3_button,
spacebar_action='SEARCH', spacebar_action='SEARCH',
use_select_all_toggle=True, use_select_all_toggle=True,
use_gizmo_drag=False,
legacy=True, legacy=True,
), ),
) )

@ -44,6 +44,8 @@ class Params:
"spacebar_action", "spacebar_action",
# Key toggles selection with 'A'. # Key toggles selection with 'A'.
"use_select_all_toggle", "use_select_all_toggle",
# Activate gizmo on drag (which support it).
"use_gizmo_drag",
# Use pie menu for tab by default (swap 'Tab/Ctrl-Tab'). # Use pie menu for tab by default (swap 'Tab/Ctrl-Tab').
"use_v3d_tab_menu", "use_v3d_tab_menu",
# Use extended pie menu for shading. # Use extended pie menu for shading.
@ -63,6 +65,7 @@ class Params:
# User preferences. # User preferences.
spacebar_action='TOOL', spacebar_action='TOOL',
use_select_all_toggle=False, use_select_all_toggle=False,
use_gizmo_drag=True,
use_v3d_tab_menu=False, use_v3d_tab_menu=False,
use_v3d_shade_ex_pie=False, use_v3d_shade_ex_pie=False,
use_pie_click_drag=False, use_pie_click_drag=False,
@ -108,6 +111,8 @@ class Params:
# User preferences # User preferences
self.spacebar_action = spacebar_action self.spacebar_action = spacebar_action
self.use_gizmo_drag = use_gizmo_drag
self.use_select_all_toggle = use_select_all_toggle self.use_select_all_toggle = use_select_all_toggle
self.use_v3d_tab_menu = use_v3d_tab_menu self.use_v3d_tab_menu = use_v3d_tab_menu
self.use_v3d_shade_ex_pie = use_v3d_shade_ex_pie self.use_v3d_shade_ex_pie = use_v3d_shade_ex_pie
@ -4755,6 +4760,20 @@ def km_generic_gizmo_click_drag(_params):
return keymap return keymap
def km_generic_gizmo_maybe_drag(params):
keymap = (
"Generic Gizmo Maybe Drag",
{"space_type": 'EMPTY', "region_type": 'WINDOW'},
{"items":
_template_items_gizmo_tweak_value_drag()
if params.use_gizmo_drag else
_template_items_gizmo_tweak_value()
},
)
return keymap
def km_generic_gizmo_select(_params): def km_generic_gizmo_select(_params):
keymap = ( keymap = (
"Generic Gizmo Select", "Generic Gizmo Select",
@ -5889,6 +5908,7 @@ def generate_keymaps(params=None):
# Gizmos. # Gizmos.
km_generic_gizmo(params), km_generic_gizmo(params),
km_generic_gizmo_drag(params), km_generic_gizmo_drag(params),
km_generic_gizmo_maybe_drag(params),
km_generic_gizmo_click_drag(params), km_generic_gizmo_click_drag(params),
km_generic_gizmo_select(params), km_generic_gizmo_select(params),
km_generic_gizmo_tweak_modal_map(params), km_generic_gizmo_tweak_modal_map(params),

@ -152,7 +152,7 @@ static void WM_GGT_value_operator_redo(wmGizmoGroupType *gzgt)
gzgt->gzmap_params.regionid = RGN_TYPE_WINDOW; gzgt->gzmap_params.regionid = RGN_TYPE_WINDOW;
gzgt->setup = WIDGETGROUP_value_operator_redo_setup; gzgt->setup = WIDGETGROUP_value_operator_redo_setup;
gzgt->setup_keymap = WM_gizmogroup_setup_keymap_generic_drag; gzgt->setup_keymap = WM_gizmogroup_setup_keymap_generic_maybe_drag;
gzgt->refresh = WIDGETGROUP_value_operator_redo_refresh; gzgt->refresh = WIDGETGROUP_value_operator_redo_refresh;
} }

@ -461,7 +461,7 @@ static void IMAGE_GGT_gizmo2d(wmGizmoGroupType *gzgt)
gzgt->poll = ED_widgetgroup_gizmo2d_poll; gzgt->poll = ED_widgetgroup_gizmo2d_poll;
gzgt->setup = ED_widgetgroup_gizmo2d_setup; gzgt->setup = ED_widgetgroup_gizmo2d_setup;
gzgt->setup_keymap = WM_gizmogroup_setup_keymap_generic_drag; gzgt->setup_keymap = WM_gizmogroup_setup_keymap_generic_maybe_drag;
gzgt->refresh = ED_widgetgroup_gizmo2d_refresh; gzgt->refresh = ED_widgetgroup_gizmo2d_refresh;
gzgt->draw_prepare = ED_widgetgroup_gizmo2d_draw_prepare; gzgt->draw_prepare = ED_widgetgroup_gizmo2d_draw_prepare;
} }

@ -190,7 +190,7 @@ void NODE_GGT_backdrop_transform(wmGizmoGroupType *gzgt)
gzgt->poll = WIDGETGROUP_node_transform_poll; gzgt->poll = WIDGETGROUP_node_transform_poll;
gzgt->setup = WIDGETGROUP_node_transform_setup; gzgt->setup = WIDGETGROUP_node_transform_setup;
gzgt->setup_keymap = WM_gizmogroup_setup_keymap_generic_drag; gzgt->setup_keymap = WM_gizmogroup_setup_keymap_generic_maybe_drag;
gzgt->refresh = WIDGETGROUP_node_transform_refresh; gzgt->refresh = WIDGETGROUP_node_transform_refresh;
} }
@ -411,7 +411,7 @@ void NODE_GGT_backdrop_crop(wmGizmoGroupType *gzgt)
gzgt->poll = WIDGETGROUP_node_crop_poll; gzgt->poll = WIDGETGROUP_node_crop_poll;
gzgt->setup = WIDGETGROUP_node_crop_setup; gzgt->setup = WIDGETGROUP_node_crop_setup;
gzgt->setup_keymap = WM_gizmogroup_setup_keymap_generic_drag; gzgt->setup_keymap = WM_gizmogroup_setup_keymap_generic_maybe_drag;
gzgt->draw_prepare = WIDGETGROUP_node_crop_draw_prepare; gzgt->draw_prepare = WIDGETGROUP_node_crop_draw_prepare;
gzgt->refresh = WIDGETGROUP_node_crop_refresh; gzgt->refresh = WIDGETGROUP_node_crop_refresh;
} }
@ -516,7 +516,7 @@ void NODE_GGT_backdrop_sun_beams(wmGizmoGroupType *gzgt)
gzgt->poll = WIDGETGROUP_node_sbeam_poll; gzgt->poll = WIDGETGROUP_node_sbeam_poll;
gzgt->setup = WIDGETGROUP_node_sbeam_setup; gzgt->setup = WIDGETGROUP_node_sbeam_setup;
gzgt->setup_keymap = WM_gizmogroup_setup_keymap_generic_drag; gzgt->setup_keymap = WM_gizmogroup_setup_keymap_generic_maybe_drag;
gzgt->draw_prepare = WIDGETGROUP_node_sbeam_draw_prepare; gzgt->draw_prepare = WIDGETGROUP_node_sbeam_draw_prepare;
gzgt->refresh = WIDGETGROUP_node_sbeam_refresh; gzgt->refresh = WIDGETGROUP_node_sbeam_refresh;
} }
@ -637,7 +637,7 @@ void NODE_GGT_backdrop_corner_pin(wmGizmoGroupType *gzgt)
gzgt->poll = WIDGETGROUP_node_corner_pin_poll; gzgt->poll = WIDGETGROUP_node_corner_pin_poll;
gzgt->setup = WIDGETGROUP_node_corner_pin_setup; gzgt->setup = WIDGETGROUP_node_corner_pin_setup;
gzgt->setup_keymap = WM_gizmogroup_setup_keymap_generic_drag; gzgt->setup_keymap = WM_gizmogroup_setup_keymap_generic_maybe_drag;
gzgt->draw_prepare = WIDGETGROUP_node_corner_pin_draw_prepare; gzgt->draw_prepare = WIDGETGROUP_node_corner_pin_draw_prepare;
gzgt->refresh = WIDGETGROUP_node_corner_pin_refresh; gzgt->refresh = WIDGETGROUP_node_corner_pin_refresh;
} }

@ -220,7 +220,7 @@ void VIEW3D_GGT_armature_spline(wmGizmoGroupType *gzgt)
gzgt->poll = WIDGETGROUP_armature_spline_poll; gzgt->poll = WIDGETGROUP_armature_spline_poll;
gzgt->setup = WIDGETGROUP_armature_spline_setup; gzgt->setup = WIDGETGROUP_armature_spline_setup;
gzgt->setup_keymap = WM_gizmogroup_setup_keymap_generic_drag; gzgt->setup_keymap = WM_gizmogroup_setup_keymap_generic_maybe_drag;
gzgt->refresh = WIDGETGROUP_armature_spline_refresh; gzgt->refresh = WIDGETGROUP_armature_spline_refresh;
} }

@ -315,7 +315,7 @@ void VIEW3D_GGT_camera(wmGizmoGroupType *gzgt)
gzgt->poll = WIDGETGROUP_camera_poll; gzgt->poll = WIDGETGROUP_camera_poll;
gzgt->setup = WIDGETGROUP_camera_setup; gzgt->setup = WIDGETGROUP_camera_setup;
gzgt->setup_keymap = WM_gizmogroup_setup_keymap_generic_drag; gzgt->setup_keymap = WM_gizmogroup_setup_keymap_generic_maybe_drag;
gzgt->refresh = WIDGETGROUP_camera_refresh; gzgt->refresh = WIDGETGROUP_camera_refresh;
gzgt->message_subscribe = WIDGETGROUP_camera_message_subscribe; gzgt->message_subscribe = WIDGETGROUP_camera_message_subscribe;
} }

@ -200,7 +200,7 @@ void VIEW3D_GGT_empty_image(wmGizmoGroupType *gzgt)
gzgt->poll = WIDGETGROUP_empty_image_poll; gzgt->poll = WIDGETGROUP_empty_image_poll;
gzgt->setup = WIDGETGROUP_empty_image_setup; gzgt->setup = WIDGETGROUP_empty_image_setup;
gzgt->setup_keymap = WM_gizmogroup_setup_keymap_generic_drag; gzgt->setup_keymap = WM_gizmogroup_setup_keymap_generic_maybe_drag;
gzgt->refresh = WIDGETGROUP_empty_image_refresh; gzgt->refresh = WIDGETGROUP_empty_image_refresh;
} }

@ -117,7 +117,7 @@ void VIEW3D_GGT_force_field(wmGizmoGroupType *gzgt)
gzgt->poll = WIDGETGROUP_forcefield_poll; gzgt->poll = WIDGETGROUP_forcefield_poll;
gzgt->setup = WIDGETGROUP_forcefield_setup; gzgt->setup = WIDGETGROUP_forcefield_setup;
gzgt->setup_keymap = WM_gizmogroup_setup_keymap_generic_drag; gzgt->setup_keymap = WM_gizmogroup_setup_keymap_generic_maybe_drag;
gzgt->refresh = WIDGETGROUP_forcefield_refresh; gzgt->refresh = WIDGETGROUP_forcefield_refresh;
} }

@ -114,7 +114,7 @@ void VIEW3D_GGT_light_spot(wmGizmoGroupType *gzgt)
gzgt->poll = WIDGETGROUP_light_spot_poll; gzgt->poll = WIDGETGROUP_light_spot_poll;
gzgt->setup = WIDGETGROUP_light_spot_setup; gzgt->setup = WIDGETGROUP_light_spot_setup;
gzgt->setup_keymap = WM_gizmogroup_setup_keymap_generic_drag; gzgt->setup_keymap = WM_gizmogroup_setup_keymap_generic_maybe_drag;
gzgt->refresh = WIDGETGROUP_light_spot_refresh; gzgt->refresh = WIDGETGROUP_light_spot_refresh;
} }
@ -231,7 +231,7 @@ void VIEW3D_GGT_light_area(wmGizmoGroupType *gzgt)
gzgt->poll = WIDGETGROUP_light_area_poll; gzgt->poll = WIDGETGROUP_light_area_poll;
gzgt->setup = WIDGETGROUP_light_area_setup; gzgt->setup = WIDGETGROUP_light_area_setup;
gzgt->setup_keymap = WM_gizmogroup_setup_keymap_generic_drag; gzgt->setup_keymap = WM_gizmogroup_setup_keymap_generic_maybe_drag;
gzgt->refresh = WIDGETGROUP_light_area_refresh; gzgt->refresh = WIDGETGROUP_light_area_refresh;
} }
@ -319,7 +319,7 @@ void VIEW3D_GGT_light_target(wmGizmoGroupType *gzgt)
gzgt->poll = WIDGETGROUP_light_target_poll; gzgt->poll = WIDGETGROUP_light_target_poll;
gzgt->setup = WIDGETGROUP_light_target_setup; gzgt->setup = WIDGETGROUP_light_target_setup;
gzgt->setup_keymap = WM_gizmogroup_setup_keymap_generic_drag; gzgt->setup_keymap = WM_gizmogroup_setup_keymap_generic_maybe_drag;
gzgt->draw_prepare = WIDGETGROUP_light_target_draw_prepare; gzgt->draw_prepare = WIDGETGROUP_light_target_draw_prepare;
} }

@ -1993,7 +1993,7 @@ void VIEW3D_GGT_xform_gizmo(wmGizmoGroupType *gzgt)
gzgt->poll = WIDGETGROUP_gizmo_poll_tool; gzgt->poll = WIDGETGROUP_gizmo_poll_tool;
gzgt->setup = WIDGETGROUP_gizmo_setup; gzgt->setup = WIDGETGROUP_gizmo_setup;
gzgt->setup_keymap = WM_gizmogroup_setup_keymap_generic_drag; gzgt->setup_keymap = WM_gizmogroup_setup_keymap_generic_maybe_drag;
gzgt->refresh = WIDGETGROUP_gizmo_refresh; gzgt->refresh = WIDGETGROUP_gizmo_refresh;
gzgt->message_subscribe = WIDGETGROUP_gizmo_message_subscribe; gzgt->message_subscribe = WIDGETGROUP_gizmo_message_subscribe;
gzgt->draw_prepare = WIDGETGROUP_gizmo_draw_prepare; gzgt->draw_prepare = WIDGETGROUP_gizmo_draw_prepare;
@ -2024,7 +2024,7 @@ void VIEW3D_GGT_xform_gizmo_context(wmGizmoGroupType *gzgt)
gzgt->poll = WIDGETGROUP_gizmo_poll_context; gzgt->poll = WIDGETGROUP_gizmo_poll_context;
gzgt->setup = WIDGETGROUP_gizmo_setup; gzgt->setup = WIDGETGROUP_gizmo_setup;
gzgt->setup_keymap = WM_gizmogroup_setup_keymap_generic_drag; gzgt->setup_keymap = WM_gizmogroup_setup_keymap_generic_maybe_drag;
gzgt->refresh = WIDGETGROUP_gizmo_refresh; gzgt->refresh = WIDGETGROUP_gizmo_refresh;
gzgt->message_subscribe = WIDGETGROUP_gizmo_message_subscribe; gzgt->message_subscribe = WIDGETGROUP_gizmo_message_subscribe;
gzgt->draw_prepare = WIDGETGROUP_gizmo_draw_prepare; gzgt->draw_prepare = WIDGETGROUP_gizmo_draw_prepare;
@ -2228,7 +2228,7 @@ void VIEW3D_GGT_xform_cage(wmGizmoGroupType *gzgt)
gzgt->poll = WIDGETGROUP_xform_cage_poll; gzgt->poll = WIDGETGROUP_xform_cage_poll;
gzgt->setup = WIDGETGROUP_xform_cage_setup; gzgt->setup = WIDGETGROUP_xform_cage_setup;
gzgt->setup_keymap = WM_gizmogroup_setup_keymap_generic_drag; gzgt->setup_keymap = WM_gizmogroup_setup_keymap_generic_maybe_drag;
gzgt->refresh = WIDGETGROUP_xform_cage_refresh; gzgt->refresh = WIDGETGROUP_xform_cage_refresh;
gzgt->message_subscribe = WIDGETGROUP_xform_cage_message_subscribe; gzgt->message_subscribe = WIDGETGROUP_xform_cage_message_subscribe;
gzgt->draw_prepare = WIDGETGROUP_xform_cage_draw_prepare; gzgt->draw_prepare = WIDGETGROUP_xform_cage_draw_prepare;
@ -2412,7 +2412,7 @@ void VIEW3D_GGT_xform_shear(wmGizmoGroupType *gzgt)
gzgt->poll = WIDGETGROUP_xform_shear_poll; gzgt->poll = WIDGETGROUP_xform_shear_poll;
gzgt->setup = WIDGETGROUP_xform_shear_setup; gzgt->setup = WIDGETGROUP_xform_shear_setup;
gzgt->setup_keymap = WM_gizmogroup_setup_keymap_generic_drag; gzgt->setup_keymap = WM_gizmogroup_setup_keymap_generic_maybe_drag;
gzgt->refresh = WIDGETGROUP_xform_shear_refresh; gzgt->refresh = WIDGETGROUP_xform_shear_refresh;
gzgt->message_subscribe = WIDGETGROUP_xform_shear_message_subscribe; gzgt->message_subscribe = WIDGETGROUP_xform_shear_message_subscribe;
gzgt->draw_prepare = WIDGETGROUP_xform_shear_draw_prepare; gzgt->draw_prepare = WIDGETGROUP_xform_shear_draw_prepare;

@ -463,7 +463,7 @@ void VIEW3D_GGT_xform_extrude(struct wmGizmoGroupType *gzgt)
gzgt->poll = ED_gizmo_poll_or_unlink_delayed_from_tool; gzgt->poll = ED_gizmo_poll_or_unlink_delayed_from_tool;
gzgt->setup = gizmo_mesh_extrude_setup; gzgt->setup = gizmo_mesh_extrude_setup;
gzgt->setup_keymap = WM_gizmogroup_setup_keymap_generic_drag; gzgt->setup_keymap = WM_gizmogroup_setup_keymap_generic_maybe_drag;
gzgt->refresh = gizmo_mesh_extrude_refresh; gzgt->refresh = gizmo_mesh_extrude_refresh;
gzgt->draw_prepare = gizmo_mesh_extrude_draw_prepare; gzgt->draw_prepare = gizmo_mesh_extrude_draw_prepare;
gzgt->invoke_prepare = gizmo_mesh_extrude_invoke_prepare; gzgt->invoke_prepare = gizmo_mesh_extrude_invoke_prepare;

@ -242,6 +242,8 @@ struct wmKeyMap *WM_gizmogroup_setup_keymap_generic_select(const struct wmGizmoG
struct wmKeyConfig *kc); struct wmKeyConfig *kc);
struct wmKeyMap *WM_gizmogroup_setup_keymap_generic_drag(const struct wmGizmoGroupType *gzgt, struct wmKeyMap *WM_gizmogroup_setup_keymap_generic_drag(const struct wmGizmoGroupType *gzgt,
struct wmKeyConfig *kc); struct wmKeyConfig *kc);
struct wmKeyMap *WM_gizmogroup_setup_keymap_generic_maybe_drag(const struct wmGizmoGroupType *gzgt,
struct wmKeyConfig *kc);
/* Utility functions (not callbacks). */ /* Utility functions (not callbacks). */
struct wmKeyMap *WM_gizmo_keymap_generic_with_keyconfig(struct wmKeyConfig *kc); struct wmKeyMap *WM_gizmo_keymap_generic_with_keyconfig(struct wmKeyConfig *kc);
@ -256,6 +258,9 @@ struct wmKeyMap *WM_gizmo_keymap_generic_drag(struct wmWindowManager *wm);
struct wmKeyMap *WM_gizmo_keymap_generic_click_drag_with_keyconfig(struct wmKeyConfig *kc); struct wmKeyMap *WM_gizmo_keymap_generic_click_drag_with_keyconfig(struct wmKeyConfig *kc);
struct wmKeyMap *WM_gizmo_keymap_generic_click_drag(struct wmWindowManager *wm); struct wmKeyMap *WM_gizmo_keymap_generic_click_drag(struct wmWindowManager *wm);
struct wmKeyMap *WM_gizmo_keymap_generic_maybe_drag_with_keyconfig(struct wmKeyConfig *kc);
struct wmKeyMap *WM_gizmo_keymap_generic_maybe_drag(struct wmWindowManager *wm);
void WM_gizmogroup_ensure_init(const struct bContext *C, struct wmGizmoGroup *gzgroup); void WM_gizmogroup_ensure_init(const struct bContext *C, struct wmGizmoGroup *gzgroup);
/* Sort utilities for use with 'BLI_listbase_sort'. */ /* Sort utilities for use with 'BLI_listbase_sort'. */

@ -662,6 +662,12 @@ wmKeyMap *WM_gizmogroup_setup_keymap_generic_drag(const wmGizmoGroupType *UNUSED
return WM_gizmo_keymap_generic_drag_with_keyconfig(kc); return WM_gizmo_keymap_generic_drag_with_keyconfig(kc);
} }
wmKeyMap *WM_gizmogroup_setup_keymap_generic_maybe_drag(const wmGizmoGroupType *UNUSED(gzgt),
wmKeyConfig *kc)
{
return WM_gizmo_keymap_generic_maybe_drag_with_keyconfig(kc);
}
/** /**
* Variation of #WM_gizmogroup_keymap_common but with keymap items for selection * Variation of #WM_gizmogroup_keymap_common but with keymap items for selection
* *
@ -767,6 +773,17 @@ struct wmKeyMap *WM_gizmo_keymap_generic_click_drag(wmWindowManager *wm)
return WM_gizmo_keymap_generic_click_drag_with_keyconfig(wm->defaultconf); return WM_gizmo_keymap_generic_click_drag_with_keyconfig(wm->defaultconf);
} }
/** Drag or press depending on preference. */
struct wmKeyMap *WM_gizmo_keymap_generic_maybe_drag_with_keyconfig(wmKeyConfig *kc)
{
const char *idname = "Generic Gizmo Maybe Drag";
return WM_keymap_ensure(kc, idname, SPACE_EMPTY, RGN_TYPE_WINDOW);
}
struct wmKeyMap *WM_gizmo_keymap_generic_maybe_drag(wmWindowManager *wm)
{
return WM_gizmo_keymap_generic_drag_with_keyconfig(wm->defaultconf);
}
/** \} */ /** \} */
/* -------------------------------------------------------------------- */ /* -------------------------------------------------------------------- */