Welcome to mirror list, hosted at ThFree Co, Russian Federation.

git.blender.org/blender.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorHans Goudey <h.goudey@me.com>2020-05-21 18:42:23 +0300
committerHans Goudey <h.goudey@me.com>2020-05-21 18:42:23 +0300
commit7e4654e4ce2cc5c012c0fe981eda29afd79ec622 (patch)
tree8499e1f4c711f46aec51668ef12c1180ccd571e0 /release
parentdf14b115263fba3a12a6d1787ce02dc74f4cd0fc (diff)
UI: Fix T76918: 3D Mouse Inconsistent / Inaccessible UI
This consolidates the UI code for NDOF input settings, making all settings accessible from the preferences. This works around an issue where the Space Navigator's "Menu" button doesn't trigger the settings menu in Blender. I also took the opportunity to redo the UI layout. Differential Revision: https://developer.blender.org/D7806
Diffstat (limited to 'release')
-rw-r--r--release/scripts/startup/bl_ui/space_userpref.py99
1 files changed, 42 insertions, 57 deletions
diff --git a/release/scripts/startup/bl_ui/space_userpref.py b/release/scripts/startup/bl_ui/space_userpref.py
index 7aa5a6e045e..3baedd889e0 100644
--- a/release/scripts/startup/bl_ui/space_userpref.py
+++ b/release/scripts/startup/bl_ui/space_userpref.py
@@ -1436,16 +1436,7 @@ class USERPREF_PT_input_ndof(InputPanel, CenterAlignMixIn, Panel):
prefs = context.preferences
inputs = prefs.inputs
- flow = layout.grid_flow(row_major=False, columns=0, even_columns=True, even_rows=False, align=False)
-
- flow.prop(inputs, "ndof_sensitivity", text="Pan Sensitivity")
- flow.prop(inputs, "ndof_orbit_sensitivity", text="Orbit Sensitivity")
- flow.prop(inputs, "ndof_deadzone", text="Deadzone")
-
- layout.separator()
-
- flow.row().prop(inputs, "ndof_view_navigate_method", expand=True)
- flow.row().prop(inputs, "ndof_view_rotate_method", expand=True)
+ USERPREF_PT_ndof_settings.draw_settings(layout, inputs)
# -----------------------------------------------------------------------------
@@ -1584,71 +1575,65 @@ class USERPREF_PT_ndof_settings(Panel):
bl_label = "3D Mouse Settings"
bl_space_type = 'TOPBAR' # dummy.
bl_region_type = 'HEADER'
+ bl_ui_units_x = 12
- def draw(self, context):
- layout = self.layout
- layout.use_property_split = True
- layout.use_property_decorate = False # No animation.
-
- input_prefs = context.preferences.inputs
-
- is_view3d = context.space_data.type == 'VIEW_3D'
+ @staticmethod
+ def draw_settings(layout, props, show_3dview_settings=True):
+ col = layout.column()
+ col.prop(props, "ndof_sensitivity", text="Pan Sensitivity")
+ col.prop(props, "ndof_orbit_sensitivity")
+ col.prop(props, "ndof_deadzone")
- col = layout.column(align=True)
- col.prop(input_prefs, "ndof_sensitivity")
- col.prop(input_prefs, "ndof_orbit_sensitivity")
- col.prop(input_prefs, "ndof_deadzone")
+ layout.separator()
- if is_view3d:
- layout.separator()
- layout.prop(input_prefs, "ndof_show_guide")
+ if show_3dview_settings:
+ col = layout.column()
+ col.row().prop(props, "ndof_view_navigate_method", expand=True, text="Navigation")
+ col.row().prop(props, "ndof_view_rotate_method", expand=True, text="Rotation")
layout.separator()
- layout.label(text="Orbit Style")
- layout.row().prop(input_prefs, "ndof_view_navigate_method", text="Navigate")
- layout.row().prop(input_prefs, "ndof_view_rotate_method", text="Orbit")
- layout.separator()
- layout.label(text="Orbit Options")
- split = layout.split(factor=0.6)
- row = split.row()
- row.alignment = 'RIGHT'
- row.label(text="Invert Axis")
- row = split.row(align=True)
- for text, attr in (
- ("X", "ndof_rotx_invert_axis"),
- ("Y", "ndof_roty_invert_axis"),
- ("Z", "ndof_rotz_invert_axis"),
- ):
- row.prop(input_prefs, attr, text=text, toggle=True)
+ col = layout.column()
+ if show_3dview_settings:
+ col.prop(props, "ndof_show_guide")
+ col.prop(props, "ndof_zoom_invert")
+ row = col.row(heading="Pan")
+ row.prop(props, "ndof_pan_yz_swap_axis", text="Swap Y and Z Axes")
- # view2d use pan/zoom
layout.separator()
- layout.label(text="Pan Options")
- split = layout.split(factor=0.6)
- row = split.row()
- row.alignment = 'RIGHT'
- row.label(text="Invert Axis")
- row = split.row(align=True)
+ row = layout.row(heading=("Invert Axis Pan" if show_3dview_settings else "Invert Pan Axis"))
for text, attr in (
("X", "ndof_panx_invert_axis"),
("Y", "ndof_pany_invert_axis"),
("Z", "ndof_panz_invert_axis"),
):
- row.prop(input_prefs, attr, text=text, toggle=True)
+ row.prop(props, attr, text=text, toggle=True)
- layout.prop(input_prefs, "ndof_pan_yz_swap_axis")
-
- layout.label(text="Zoom Options")
- layout.prop(input_prefs, "ndof_zoom_invert")
+ if show_3dview_settings:
+ row = layout.row(heading="Orbit")
+ for text, attr in (
+ ("X", "ndof_rotx_invert_axis"),
+ ("Y", "ndof_roty_invert_axis"),
+ ("Z", "ndof_rotz_invert_axis"),
+ ):
+ row.prop(props, attr, text=text, toggle=True)
- if is_view3d:
layout.separator()
- layout.label(text="Fly/Walk Options")
- layout.prop(input_prefs, "ndof_fly_helicopter")
- layout.prop(input_prefs, "ndof_lock_horizon")
+ col = layout.column(heading="Fly/Walk")
+ col.prop(props, "ndof_lock_horizon")
+ col.prop(props, "ndof_fly_helicopter")
+
+ def draw(self, context):
+ layout = self.layout
+ layout.use_property_split = True
+ layout.use_property_decorate = False # No animation.
+
+ input_prefs = context.preferences.inputs
+
+ is_view3d = context.space_data.type == 'VIEW_3D'
+ self.draw_settings(layout, input_prefs, is_view3d)
# -----------------------------------------------------------------------------
# Key-Map Editor Panels