From 2d32bc609aae525cba5d16d60d5a542257254802 Mon Sep 17 00:00:00 2001 From: Andrej730 Date: Thu, 16 Mar 2023 10:02:23 +0500 Subject: [PATCH] Figured a new way to update viewport to preview changes in ifc text --- .../blenderbim/bim/module/drawing/operator.py | 6 +----- src/blenderbim/blenderbim/core/tool.py | 1 + src/blenderbim/blenderbim/tool/blender.py | 10 +++++++++- 3 files changed, 11 insertions(+), 6 deletions(-) diff --git a/src/blenderbim/blenderbim/bim/module/drawing/operator.py b/src/blenderbim/blenderbim/bim/module/drawing/operator.py index bfd05b637c..ff7bfca79b 100644 --- a/src/blenderbim/blenderbim/bim/module/drawing/operator.py +++ b/src/blenderbim/blenderbim/bim/module/drawing/operator.py @@ -1364,11 +1364,7 @@ class DisableEditingText(bpy.types.Operator, Operator): # force update this object's font size for viewport display DecoratorData.data.pop(context.object.name, None) - - # TODO: just needed some way to trigger UI update - # probably there is more proper way to do it - props = context.object.BIMTextProperties - props.font_size = props.font_size + tool.Blender.update_viewport() class EditAssignedProduct(bpy.types.Operator, Operator): diff --git a/src/blenderbim/blenderbim/core/tool.py b/src/blenderbim/blenderbim/core/tool.py index 4054feafa9..1f84c04ae1 100644 --- a/src/blenderbim/blenderbim/core/tool.py +++ b/src/blenderbim/blenderbim/core/tool.py @@ -80,6 +80,7 @@ def set_active_object(cls, obj): pass def apply_bmesh(cls, mesh, bm): pass def get_bmesh_for_mesh(cls, mesh, clean=False): pass def get_viewport_context(cls): pass +def update_viewport(cls): pass @interface diff --git a/src/blenderbim/blenderbim/tool/blender.py b/src/blenderbim/blenderbim/tool/blender.py index ddf9e774d1..4292f07132 100644 --- a/src/blenderbim/blenderbim/tool/blender.py +++ b/src/blenderbim/blenderbim/tool/blender.py @@ -143,4 +143,12 @@ class Blender: """ area = next(area for area in bpy.context.screen.areas if area.type == "VIEW_3D") context_override = {"area": area} - return context_override \ No newline at end of file + return context_override + + @classmethod + def update_viewport(cls): + # if it stops working in future Blender versions + # there is an alternative: + # bpy.ops.wm.redraw_timer(type='DRAW_WIN_SWAP', iterations=1) + + tool.Blender.get_viewport_context()['area'].tag_redraw() \ No newline at end of file