aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorThomas White <taw@physics.org>2017-08-13 21:39:56 +0200
committerThomas White <taw@physics.org>2017-08-13 22:20:07 +0200
commitbca0a57008988566e33b6b31809e943a126bbc6c (patch)
tree4efaac43e86cb8718e0af2512dedf2446a7baedc
parent50477700fdc661beda936c64891520f7d159f6ac (diff)
Eliminate empty runs after delete
-rw-r--r--src/frame.c19
1 files changed, 19 insertions, 0 deletions
diff --git a/src/frame.c b/src/frame.c
index bc96f4a..bdfb453 100644
--- a/src/frame.c
+++ b/src/frame.c
@@ -993,6 +993,23 @@ void delete_text_from_frame(struct frame *fr, struct edit_pos p1, struct edit_po
}
+static void eliminate_empty_runs(Paragraph *para)
+{
+ int i;
+
+ for ( i=0; i<para->n_runs; i++ ) {
+ if ( para->runs[i].len_bytes == 0 ) {
+ int j;
+ printf("run %i empty\n", i);
+ for ( j=i; j<para->n_runs-1; j++ ) {
+ para->runs[j] = para->runs[j+1];
+ }
+ para->n_runs--;
+ }
+ }
+}
+
+
/* offs2 negative means "to end" */
size_t delete_text_in_paragraph(Paragraph *para, size_t offs1, ssize_t offs2)
{
@@ -1060,6 +1077,8 @@ size_t delete_text_in_paragraph(Paragraph *para, size_t offs1, ssize_t offs2)
}
+ eliminate_empty_runs(para);
+
return sum_del;
}