[Bf-blender-cvs] [7dd888c0cf4] master: Keymap: share 3D view transform keymaps

Campbell Barton noreply at git.blender.org
Fri May 24 07:48:57 CEST 2019


Commit: 7dd888c0cf4039d3224863a7f2d235674d321614
Author: Campbell Barton
Date:   Fri May 24 15:46:20 2019 +1000
Branches: master
https://developer.blender.org/rB7dd888c0cf4039d3224863a7f2d235674d321614

Keymap: share 3D view transform keymaps

While internally these are separate gizmos,
there is no reason to have a keymaps for each.

Also prefix the gizmo with "3D View"
since there are other kinds of transform gizmos.

===================================================================

M	release/scripts/presets/keyconfig/keymap_data/blender_default.py
M	release/scripts/presets/keyconfig/keymap_data/industry_compatible_data.py
M	source/blender/editors/transform/transform_gizmo_3d.c
M	source/blender/windowmanager/gizmo/WM_gizmo_api.h
M	source/blender/windowmanager/gizmo/intern/wm_gizmo_group.c

===================================================================

diff --git a/release/scripts/presets/keyconfig/keymap_data/blender_default.py b/release/scripts/presets/keyconfig/keymap_data/blender_default.py
index a344d4c7d50..297ca5f6be6 100644
--- a/release/scripts/presets/keyconfig/keymap_data/blender_default.py
+++ b/release/scripts/presets/keyconfig/keymap_data/blender_default.py
@@ -4348,9 +4348,9 @@ def km_transform_modal_map(_params):
     return keymap
 
 
-def km_transform_gizmo(_params):
+def km_3d_view_transform_gizmo(_params):
     keymap = (
-        "Transform Gizmo Context",
+        "3D View: Transform Gizmo",
         {"space_type": 'VIEW_3D', "region_type": 'WINDOW'},
         {"items": _template_items_gizmo_tweak_value()},
     )
@@ -6137,7 +6137,7 @@ def generate_keymaps(params=None):
 
         # Gizmos.
         km_gizmos(params),
-        km_transform_gizmo(params),
+        km_3d_view_transform_gizmo(params),
         km_backdrop_transform_widget_tweak_modal_map(params),
         km_backdrop_crop_widget(params),
         km_backdrop_crop_widget_tweak_modal_map(params),
diff --git a/release/scripts/presets/keyconfig/keymap_data/industry_compatible_data.py b/release/scripts/presets/keyconfig/keymap_data/industry_compatible_data.py
index 35a3f5c49aa..a2f255af10f 100644
--- a/release/scripts/presets/keyconfig/keymap_data/industry_compatible_data.py
+++ b/release/scripts/presets/keyconfig/keymap_data/industry_compatible_data.py
@@ -3545,19 +3545,9 @@ def km_gizmos(_params):
     return keymap
 
 
-def km_transform_gizmo(_params):
+def km_3d_view_transform_gizmo(_params):
     keymap = (
-        "Transform Gizmo",
-        {"space_type": 'VIEW_3D', "region_type": 'WINDOW'},
-        {"items": _template_items_gizmo_tweak_value()},
-    )
-
-    return keymap
-
-
-def km_transform_gizmo_context(_params):
-    keymap = (
-        "Transform Gizmo Context",
+        "3D View: Transform Gizmo",
         {"space_type": 'VIEW_3D', "region_type": 'WINDOW'},
         {"items": _template_items_gizmo_tweak_value()},
     )
@@ -3754,8 +3744,7 @@ def generate_keymaps(params=None):
 
         # Gizmos.
         km_gizmos(params),
-        km_transform_gizmo(params),
-        km_transform_gizmo_context(params),
+        km_3d_view_transform_gizmo(params),
 
         # Tool System.
         km_3d_view_tool_move(params),
diff --git a/source/blender/editors/transform/transform_gizmo_3d.c b/source/blender/editors/transform/transform_gizmo_3d.c
index 16dcd053f9d..ead90b6a67a 100644
--- a/source/blender/editors/transform/transform_gizmo_3d.c
+++ b/source/blender/editors/transform/transform_gizmo_3d.c
@@ -1976,12 +1976,18 @@ static bool WIDGETGROUP_gizmo_poll_tool(const struct bContext *C, struct wmGizmo
   return true;
 }
 
-/* Expose as multiple gizmos so tools use one, persistant context another.
+static wmKeyMap *WIDGETGROUP_gizmo_setup_keymap(const struct wmGizmoGroupType *gzgt,
+                                                struct wmKeyConfig *config)
+{
+  return WM_gizmogroup_keymap_common_with_name(gzgt, config, "3D View: Transform Gizmo");
+}
+
+/* Expose as multiple gizmos so tools use one, persistent context another.
  * Needed because they use different options which isn't so simple to dynamically update. */
 
 void VIEW3D_GGT_xform_gizmo(wmGizmoGroupType *gzgt)
 {
-  gzgt->name = "Transform Gizmo";
+  gzgt->name = "3D View: Transform Gizmo";
   gzgt->idname = "VIEW3D_GGT_xform_gizmo";
 
   gzgt->flag = WM_GIZMOGROUPTYPE_3D;
@@ -1995,6 +2001,7 @@ void VIEW3D_GGT_xform_gizmo(wmGizmoGroupType *gzgt)
   gzgt->message_subscribe = WIDGETGROUP_gizmo_message_subscribe;
   gzgt->draw_prepare = WIDGETGROUP_gizmo_draw_prepare;
   gzgt->invoke_prepare = WIDGETGROUP_gizmo_invoke_prepare;
+  gzgt->setup_keymap = WIDGETGROUP_gizmo_setup_keymap;
 
   static const EnumPropertyItem rna_enum_gizmo_items[] = {
       {V3D_GIZMO_SHOW_OBJECT_TRANSLATE, "TRANSLATE", 0, "Move", ""},
@@ -2014,7 +2021,7 @@ void VIEW3D_GGT_xform_gizmo(wmGizmoGroupType *gzgt)
 /** Only poll, flag & gzmap_params differ. */
 void VIEW3D_GGT_xform_gizmo_context(wmGizmoGroupType *gzgt)
 {
-  gzgt->name = "Transform Gizmo Context";
+  gzgt->name = "3D View: Transform Gizmo Context";
   gzgt->idname = "VIEW3D_GGT_xform_gizmo_context";
 
   gzgt->flag = WM_GIZMOGROUPTYPE_3D | WM_GIZMOGROUPTYPE_PERSISTENT;
@@ -2025,6 +2032,7 @@ void VIEW3D_GGT_xform_gizmo_context(wmGizmoGroupType *gzgt)
   gzgt->message_subscribe = WIDGETGROUP_gizmo_message_subscribe;
   gzgt->draw_prepare = WIDGETGROUP_gizmo_draw_prepare;
   gzgt->invoke_prepare = WIDGETGROUP_gizmo_invoke_prepare;
+  gzgt->setup_keymap = WIDGETGROUP_gizmo_setup_keymap;
 }
 
 /** \} */
diff --git a/source/blender/windowmanager/gizmo/WM_gizmo_api.h b/source/blender/windowmanager/gizmo/WM_gizmo_api.h
index 9a272b27f87..4c24762416e 100644
--- a/source/blender/windowmanager/gizmo/WM_gizmo_api.h
+++ b/source/blender/windowmanager/gizmo/WM_gizmo_api.h
@@ -235,8 +235,12 @@ void WM_gizmo_target_property_subscribe_all(struct wmGizmo *gz,
 /* wmGizmoGroup */
 
 /* Callbacks for 'wmGizmoGroupType.setup_keymap' */
+struct wmKeyMap *WM_gizmogroup_keymap_common_with_name(const struct wmGizmoGroupType *gzgt,
+                                                       struct wmKeyConfig *config,
+                                                       const char *idname);
 struct wmKeyMap *WM_gizmogroup_keymap_common(const struct wmGizmoGroupType *gzgt,
                                              struct wmKeyConfig *config);
+
 struct wmKeyMap *WM_gizmogroup_keymap_common_select(const struct wmGizmoGroupType *gzgt,
                                                     struct wmKeyConfig *config);
 
diff --git a/source/blender/windowmanager/gizmo/intern/wm_gizmo_group.c b/source/blender/windowmanager/gizmo/intern/wm_gizmo_group.c
index 85ebd2baefa..68020c736d8 100644
--- a/source/blender/windowmanager/gizmo/intern/wm_gizmo_group.c
+++ b/source/blender/windowmanager/gizmo/intern/wm_gizmo_group.c
@@ -680,21 +680,30 @@ static wmKeyMap *gizmogroup_tweak_modal_keymap(wmKeyConfig *keyconf, const char
 }
 
 /**
- * Common default keymap for gizmo groups
+ * Common default keymap for gizmo groups.
+ *
+ * \param name: Typically #wmGizmoGroupType.name.
  */
-wmKeyMap *WM_gizmogroup_keymap_common(const wmGizmoGroupType *gzgt, wmKeyConfig *config)
+wmKeyMap *WM_gizmogroup_keymap_common_with_name(const wmGizmoGroupType *gzgt,
+                                                wmKeyConfig *config,
+                                                const char *name)
 {
   /* Use area and region id since we might have multiple gizmos
    * with the same name in different areas/regions. */
   wmKeyMap *km = WM_keymap_ensure(
-      config, gzgt->name, gzgt->gzmap_params.spaceid, gzgt->gzmap_params.regionid);
+      config, name, gzgt->gzmap_params.spaceid, gzgt->gzmap_params.regionid);
 
   WM_keymap_add_item(km, "GIZMOGROUP_OT_gizmo_tweak", LEFTMOUSE, KM_PRESS, KM_ANY, 0);
-  gizmogroup_tweak_modal_keymap(config, gzgt->name);
+  gizmogroup_tweak_modal_keymap(config, name);
 
   return km;
 }
 
+wmKeyMap *WM_gizmogroup_keymap_common(const wmGizmoGroupType *gzgt, wmKeyConfig *config)
+{
+  return WM_gizmogroup_keymap_common_with_name(gzgt, config, gzgt->name);
+}
+
 /**
  * Variation of #WM_gizmogroup_keymap_common but with keymap items for selection
  */



More information about the Bf-blender-cvs mailing list