[Bf-blender-cvs] [2ea8c81ac35] master: Text Object: change spacing now operates on selection

Damien Picard noreply at git.blender.org
Wed Nov 27 16:28:32 CET 2019


Commit: 2ea8c81ac35724c57c42638896dfb58215b3ee52
Author: Damien Picard
Date:   Thu Nov 28 02:26:08 2019 +1100
Branches: master
https://developer.blender.org/rB2ea8c81ac35724c57c42638896dfb58215b3ee52

Text Object: change spacing now operates on selection

Without this, it's not practical to change spacing on large
blocks of text.

===================================================================

M	source/blender/editors/curve/editfont.c

===================================================================

diff --git a/source/blender/editors/curve/editfont.c b/source/blender/editors/curve/editfont.c
index 92957c51c08..c9206e8df4a 100644
--- a/source/blender/editors/curve/editfont.c
+++ b/source/blender/editors/curve/editfont.c
@@ -1320,20 +1320,36 @@ static int change_spacing_exec(bContext *C, wmOperator *op)
   Curve *cu = obedit->data;
   EditFont *ef = cu->editfont;
   int kern, delta = RNA_int_get(op->ptr, "delta");
+  int selstart, selend;
+  bool changed = false;
 
-  kern = ef->textbufinfo[ef->pos - 1].kern;
-  kern += delta;
-  CLAMP(kern, -20, 20);
-
-  if (ef->textbufinfo[ef->pos - 1].kern == kern) {
-    return OPERATOR_CANCELLED;
+  const bool has_select = BKE_vfont_select_get(obedit, &selstart, &selend);
+  if (has_select) {
+    selstart -= 1;
+  }
+  else {
+    selstart = selend = ef->pos - 1;
   }
+  selstart = max_ii(0, selstart);
 
-  ef->textbufinfo[ef->pos - 1].kern = kern;
+  for (int i = selstart; i <= selend; i++) {
+    kern = ef->textbufinfo[i].kern + delta;
+    CLAMP(kern, -20, 20);
 
-  text_update_edited(C, obedit, FO_EDIT);
+    if (ef->textbufinfo[i].kern != kern) {
+      ef->textbufinfo[i].kern = kern;
+      changed = true;
+    }
+  }
 
-  return OPERATOR_FINISHED;
+  if (changed) {
+    text_update_edited(C, obedit, FO_EDIT);
+
+    return OPERATOR_FINISHED;
+  }
+  else {
+    return OPERATOR_CANCELLED;
+  }
 }
 
 void FONT_OT_change_spacing(wmOperatorType *ot)



More information about the Bf-blender-cvs mailing list