From 18157a1cd83f0607eb0ae787acebc2b76e2358ab Mon Sep 17 00:00:00 2001 From: dzaima Date: Fri, 6 Mar 2026 14:44:48 +0200 Subject: Make layout text editor not redraw every frame (#1192) --- srcs/juloo.keyboard2/CustomLayoutEditDialog.java | 11 +++++++++-- 1 file changed, 9 insertions(+), 2 deletions(-) diff --git a/srcs/juloo.keyboard2/CustomLayoutEditDialog.java b/srcs/juloo.keyboard2/CustomLayoutEditDialog.java index d63cf40..5b99e97 100644 --- a/srcs/juloo.keyboard2/CustomLayoutEditDialog.java +++ b/srcs/juloo.keyboard2/CustomLayoutEditDialog.java @@ -98,6 +98,9 @@ public class CustomLayoutEditDialog /** A mutable Rect object that is used during onDraw. */ Rect _clip_bounds = new Rect(); + + /** The currently-set left padding amount */ + int _prev_padding = Integer.MIN_VALUE; @Override protected void onDraw(Canvas canvas) @@ -105,12 +108,16 @@ public class CustomLayoutEditDialog float digit_width = _ln_paint.measureText("0"); int line_count = getLineCount(); // Extra '+ 1' serves as padding. - setPadding((int)(((int)Math.log10(line_count) + 1 + 1) * digit_width), 0, 0, 0); + int padding = (int)(((int)Math.log10(line_count) + 1 + 1) * digit_width); + if (padding != _prev_padding) { + setPadding(padding, 0, 0, 0); + _prev_padding = padding; + } super.onDraw(canvas); _ln_paint.setColor(getPaint().getColor()); canvas.getClipBounds(_clip_bounds); Layout layout = getLayout(); - int offset = _clip_bounds.left + (int)(digit_width / 2.f); + int offset = (int)(digit_width / 2.f); int line = layout.getLineForVertical(_clip_bounds.top); int skipped = line; while (line < line_count) -- cgit v1.2.3