From 8df4b2cd562439b9499e50371c2903d6603c28a4 Mon Sep 17 00:00:00 2001 From: falken10vdl Date: Wed, 14 Jan 2026 01:06:51 +0100 Subject: [PATCH] Scale font size in PolylineDecorator and BoundingBoxDecorator based on Blender's UI preferences --- .../bonsai/bim/module/model/decorator.py | 28 +++++++++++++++---- 1 file changed, 23 insertions(+), 5 deletions(-) diff --git a/src/bonsai/bonsai/bim/module/model/decorator.py b/src/bonsai/bonsai/bim/module/model/decorator.py index 328804d4c6..a6338a05e7 100644 --- a/src/bonsai/bonsai/bim/module/model/decorator.py +++ b/src/bonsai/bonsai/bim/module/model/decorator.py @@ -29,6 +29,7 @@ import bpy import gpu import ifcopenshell import mathutils +import sys from bpy.types import SpaceView3D from bpy_extras import view3d_utils from bpy_extras.view3d_utils import location_3d_to_region_2d @@ -466,13 +467,19 @@ class PolylineDecorator: self.addon_prefs = tool.Blender.get_addon_preferences() self.font_id = 0 - font_size = tool.Blender.scale_font_size(12) + ui_style = context.preferences.ui_styles[0] + widget_font_points = ui_style.widget.points + ui_scale = context.preferences.view.ui_scale + platform_scale = 2 if sys.platform == 'darwin' else 1 + + font_size = widget_font_points * ui_scale * platform_scale + offset = widget_font_points * ui_scale * (1.5 * platform_scale) + line_height = widget_font_points * ui_scale * (1.25 * platform_scale) blf.size(self.font_id, font_size) blf.enable(self.font_id, blf.SHADOW) blf.shadow(self.font_id, 6, 0, 0, 0, 1) color = self.addon_prefs.decorations_colour color_highlight = self.addon_prefs.decorator_color_special - offset = 20 new_line = 0 for i, (key, field_name) in enumerate(texts.items()): formatted_value = None @@ -480,7 +487,7 @@ class PolylineDecorator: # Controls which options are displayed in the UI if key not in self.input_ui.input_options: continue - new_line += 20 + new_line += line_height if self.tool_state and key != self.tool_state.input_type: formatted_value = self.input_ui.get_formatted_value(key) else: @@ -515,7 +522,12 @@ class PolylineDecorator: self.addon_prefs = tool.Blender.get_addon_preferences() self.font_id = 1 self.shader = gpu.shader.from_builtin("UNIFORM_COLOR") - font_size = tool.Blender.scale_font_size(12) + ui_style = context.preferences.ui_styles[0] + widget_font_points = ui_style.widget.points + ui_scale = context.preferences.view.ui_scale + platform_scale = 2 if sys.platform == 'darwin' else 1 + + font_size = widget_font_points * ui_scale * platform_scale blf.size(self.font_id, font_size) blf.enable(self.font_id, blf.SHADOW) blf.shadow(self.font_id, 6, 0, 0, 0, 1) @@ -1936,7 +1948,13 @@ class BoundingBoxDecorator: addon_prefs = tool.Blender.get_addon_preferences() font_id = 0 - font_size = tool.Blender.scale_font_size(12) + # Get Blender's default UI widget font size from preferences + ui_style = context.preferences.ui_styles[0] + widget_font_points = ui_style.widget.points + ui_scale = context.preferences.view.ui_scale + platform_scale = 2 if sys.platform == 'darwin' else 1 + + font_size = widget_font_points * ui_scale * platform_scale blf.size(font_id, font_size) blf.enable(font_id, blf.SHADOW) blf.shadow(font_id, 6, 0, 0, 0, 1)