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
This commit is contained in:
parent
df14b11526
commit
7e4654e4ce
Notes:
blender-bot
2023-07-10 10:12:37 +02:00
Referenced by issue #76918, 3D Mouse Inconsistent / Inaccessible UI
|
@ -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,6 +1575,55 @@ 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
|
||||
|
||||
@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")
|
||||
|
||||
layout.separator()
|
||||
|
||||
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()
|
||||
|
||||
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")
|
||||
|
||||
layout.separator()
|
||||
|
||||
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(props, attr, text=text, toggle=True)
|
||||
|
||||
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)
|
||||
|
||||
layout.separator()
|
||||
|
||||
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
|
||||
|
@ -1593,62 +1633,7 @@ class USERPREF_PT_ndof_settings(Panel):
|
|||
input_prefs = context.preferences.inputs
|
||||
|
||||
is_view3d = context.space_data.type == 'VIEW_3D'
|
||||
|
||||
col = layout.column(align=True)
|
||||
col.prop(input_prefs, "ndof_sensitivity")
|
||||
col.prop(input_prefs, "ndof_orbit_sensitivity")
|
||||
col.prop(input_prefs, "ndof_deadzone")
|
||||
|
||||
if is_view3d:
|
||||
layout.separator()
|
||||
layout.prop(input_prefs, "ndof_show_guide")
|
||||
|
||||
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)
|
||||
|
||||
# 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)
|
||||
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)
|
||||
|
||||
layout.prop(input_prefs, "ndof_pan_yz_swap_axis")
|
||||
|
||||
layout.label(text="Zoom Options")
|
||||
layout.prop(input_prefs, "ndof_zoom_invert")
|
||||
|
||||
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")
|
||||
|
||||
self.draw_settings(layout, input_prefs, is_view3d)
|
||||
|
||||
# -----------------------------------------------------------------------------
|
||||
# Key-Map Editor Panels
|
||||
|
|
Loading…
Reference in New Issue