T91111: possible out of range when iterating over Math Vis item list

While preparing T91111 i found an issue with out of date index after my recent changes.
The problem is:

bpy.context.window_manager.MathVisProp can be "0" even when the list is actually empty.

This patch fixes the index issue, although the true cause might still be found elsewhere.
there is more to fix, so this is only a first step to a complete fix.

Reviewed By: campbellbarton

Differential Revision: https://developer.blender.org/D12390
This commit is contained in:
Gaia Clary 2021-09-03 13:03:31 +02:00
parent 87d1c3811f
commit 32baafe44d
2 changed files with 14 additions and 7 deletions

View File

@ -149,8 +149,12 @@ def draw_callback_view():
bgl.glDepthFunc(bgl.GL_LESS)
data_matrix, data_quat, data_euler, data_vector, data_vector_array = utils.console_math_data()
active_index = settings.index
active_key = prop_states[active_index].name if active_index >= 0 else None
if settings.index in range(0,len(prop_states)):
active_index = settings.index
active_key = prop_states[active_index].name
else:
active_index = -1
active_key = None
if data_vector:
coords = [tuple(vec.to_3d()) for vec in data_vector.values()]

View File

@ -23,11 +23,14 @@ import bpy
def console_namespace():
import console_python
get_consoles = console_python.get_console
consoles = getattr(get_consoles, "consoles", None)
if consoles:
for console, stdout, stderr in get_consoles.consoles.values():
return console.locals
for window in bpy.context.window_manager.windows:
for area in window.screen.areas:
if area.type == 'CONSOLE':
for region in area.regions:
if region.type == 'WINDOW':
console = console_python.get_console(hash(region))
if console:
return console[0].locals
return {}