aboutsummaryrefslogtreecommitdiff
path: root/dw/textblock.cc
diff options
context:
space:
mode:
authorSebastian Geerken <devnull@localhost>2013-10-09 22:21:47 +0200
committerSebastian Geerken <devnull@localhost>2013-10-09 22:21:47 +0200
commit543269017e29ecc6fcde020c78b563aeb43ee018 (patch)
tree1136127725a059a9515073465bf848c6875539be /dw/textblock.cc
parent3db296631dfd8101066847cd552422da0c26f02f (diff)
Correct initialization of words.
Diffstat (limited to 'dw/textblock.cc')
-rw-r--r--dw/textblock.cc15
1 files changed, 10 insertions, 5 deletions
diff --git a/dw/textblock.cc b/dw/textblock.cc
index 0c7a6108..7950ba96 100644
--- a/dw/textblock.cc
+++ b/dw/textblock.cc
@@ -1448,9 +1448,10 @@ Textblock::Word *Textblock::addWord (int width, int ascent, int descent,
short flags, core::style::Style *style)
{
words->increase ();
- Word *word = words->getLastRef ();
- fillWord (words->size () - 1, width, ascent, descent, flags, style);
- return word;
+ int wordNo = words->size () - 1;
+ initWord (wordNo);
+ fillWord (wordNo, width, ascent, descent, flags, style);
+ return words->getRef (wordNo);;
}
/**
@@ -1460,6 +1461,7 @@ void Textblock::initWord (int wordNo)
{
Word *word = words->getRef (wordNo);
+ word->style = word->spaceStyle = NULL;
word->wordImgRenderer = NULL;
word->spaceImgRenderer = NULL;
}
@@ -1468,7 +1470,7 @@ void Textblock::removeWordImgRenderer (int wordNo)
{
Word *word = words->getRef (wordNo);
- if (word->wordImgRenderer) {
+ if (word->style && word->wordImgRenderer) {
word->style->backgroundImage->removeExternalImgRenderer
(word->wordImgRenderer);
delete word->wordImgRenderer;
@@ -1492,7 +1494,7 @@ void Textblock::removeSpaceImgRenderer (int wordNo)
{
Word *word = words->getRef (wordNo);
- if (word->spaceImgRenderer) {
+ if (word->spaceStyle && word->spaceImgRenderer) {
word->spaceStyle->backgroundImage->removeExternalImgRenderer
(word->spaceImgRenderer);
delete word->spaceImgRenderer;
@@ -1526,6 +1528,9 @@ void Textblock::fillWord (int wordNo, int width, int ascent, int descent,
word->content.space = false;
word->flags = flags;
+ removeWordImgRenderer (wordNo);
+ removeSpaceImgRenderer (wordNo);
+
word->style = style;
word->spaceStyle = style;