Page MenuHome

Adjust Last Operation will change selection after running operator from console
Confirmed, NormalPublic


System Information
Operating system: Windows-10-10.0.18362-SP0 64 Bits
Graphics card: GeForce GTX 1650 SUPER/PCIe/SSE2 NVIDIA Corporation 4.5.0 NVIDIA 445.75

Blender Version
Broken: version: 2.83 (sub 17), branch: master, commit date: 2020-05-22 19:52, hash: rBe8dd8c2829f3, also 2.82a

Short description of error
after execute selection operator in Python Console, then use any tool that have "Adjust Last Operation" panel and tweak parameter in it - the selection dropped

Exact steps for others to reproduce the error

  1. Open file
  2. Run command in console (bpy.ops.mesh.loop_multi_select(ring=False))
  3. In 3D viewport move selection
  4. In adjust last operation panel modify some property

Selection will change and result will be incorrect.

Event Timeline

And before you say that it's not a bug,
I want to add interesting observation:

if we execute operator from text editor like this one

import bpy

and then use any tool, selection will not drop.
But if we want more complex code, like this (custom addon in N panel called "Test Select" with button, depending of selected element it execute own operator)

import bpy, bmesh
from bpy.types import Panel, Operator

# Add-on info
bl_info = {
    "name": "Test Select",
    "author": "APEC",
    "version": (1, 0, 0),
    "blender": (2, 82, 0),
    "location": "View3D > Properties > Test Select",
    "description": "test select", 
    "wiki_url": "",
    "tracker_url": "",      
    "category": "3D View"

# Context selection: if polygons - Sel Linked All, if Edges - MultiSelect Loop, else - Sel Open Edges
class CONSEL_OT_context_select(Operator):
    bl_idname = "consel.context_select"
    bl_label = "Context selection"
    bl_description = "Selecting depend of selected elements"

    def execute(self, context):
        context = bpy.context
        ob = context.edit_object
        me =
        bm = bmesh.from_edit_mesh(me)
        # checking for face selected
        selFaces = [f for f in bm.faces if]

        # checking for edge selected
        selEdges = [e for e in bm.edges if]

        if selFaces:
        if selEdges:
            bpy.ops.mesh.select_non_manifold(extend=False, use_wire=True, use_boundary=True, use_multi_face=True)
        return {'FINISHED'}

# UI: N panel - Test Select
class SELTOPOLOGY_PT_main(Panel):          
    bl_label = "Test Select"
    bl_space_type = "VIEW_3D"
    bl_region_type = "UI"
    bl_category = 'Test Select'
    def draw (self, context):
        layout = self.layout
        row = layout.row(align=True)

def register():

def unregister():

if __name__ == "__main__":

and after that we use any tool and change any parameter in "Adjust Last Operation" panel, the selection will be dropped.

Richard Antalik (ISS) renamed this task from Python Console: execute selection operator and after use all kind of tool and tweak parameter in "Adjust Last Operation" panel - drops selection to Adjust Last Operation will change selection after running operator from console.Mon, May 25, 3:24 PM
Richard Antalik (ISS) changed the task status from Needs Triage to Confirmed.
Richard Antalik (ISS) updated the task description. (Show Details)

Another example:

  1. Select some Object/s (no matter is it meshes, lights or cameras).
  2. Run command in console (bpy.ops.object.delete(use_global=False)). Simple delete.
  3. Add new object and change some parameter in "Adjust Last Operation" panel.
  4. Deleted Object/s appear. Magic!