diff options
author | Thomas White <taw@physics.org> | 2019-05-24 20:33:03 +0200 |
---|---|---|
committer | Thomas White <taw@physics.org> | 2019-05-24 20:33:03 +0200 |
commit | e3ee9aa8ffa5f75707316627940c3dfe96c94ece (patch) | |
tree | bb7537efdb2c51a6380d9ecb064fa6f5fc4044fa /libstorycode/narrative.c | |
parent | d321c825e10eaaec66f3584e2bdb8edda4e44e0e (diff) |
Fix paragraph splitting logic
Diffstat (limited to 'libstorycode/narrative.c')
-rw-r--r-- | libstorycode/narrative.c | 11 |
1 files changed, 6 insertions, 5 deletions
diff --git a/libstorycode/narrative.c b/libstorycode/narrative.c index 38c7284..2a8f0f3 100644 --- a/libstorycode/narrative.c +++ b/libstorycode/narrative.c @@ -220,13 +220,14 @@ static struct narrative_item *add_item(Narrative *n) } +/* New item will have index 'pos' */ static struct narrative_item *insert_item(Narrative *n, int pos) { add_item(n); memmove(&n->items[pos+1], &n->items[pos], (n->n_items-pos-1)*sizeof(struct narrative_item)); - init_item(&n->items[pos+1]); - return &n->items[pos+1]; + init_item(&n->items[pos]); + return &n->items[pos]; } @@ -298,7 +299,7 @@ void narrative_add_eop(Narrative *n) void narrative_insert_slide(Narrative *n, Slide *slide, int pos) { - struct narrative_item *item = insert_item(n, pos-1); + struct narrative_item *item = insert_item(n, pos); item->type = NARRATIVE_ITEM_SLIDE; item->slide = slide; item->slide_thumbnail = NULL; @@ -389,9 +390,9 @@ void narrative_split_item(Narrative *n, int i1, size_t o1) struct narrative_item *item2; item1 = &n->items[i1]; - item2 = insert_item(n, i1); + item2 = insert_item(n, i1+1); - if ( !narrative_item_is_text(n, i1) ) { + if ( narrative_item_is_text(n, i1) ) { item2->text = strdup(&item1->text[o1]); item1->text[o1] = '\0'; } else { |