diff options
author | Thomas White <taw@physics.org> | 2017-08-13 21:39:56 +0200 |
---|---|---|
committer | Thomas White <taw@physics.org> | 2017-08-13 22:20:07 +0200 |
commit | bca0a57008988566e33b6b31809e943a126bbc6c (patch) | |
tree | 4efaac43e86cb8718e0af2512dedf2446a7baedc /src/frame.c | |
parent | 50477700fdc661beda936c64891520f7d159f6ac (diff) |
Eliminate empty runs after delete
Diffstat (limited to 'src/frame.c')
-rw-r--r-- | src/frame.c | 19 |
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; } |