If it should be just for the textbox, we need to adjust more since m_text is used for the multiple-label controls as well as for the textbox.

I think calling the current SetText() function at the end of SetLine() would be fine.

```c++
void CGUIDialogBoxBase::SetLine(unsigned int iLine, const CVariant& line)
{
  [...]
  std::string text = StringUtils::Join(lines, "\n");
  SetText(text);
}

void CGUIDialogBoxBase::SetText(const CVariant& text)
{
  std::string label = GetLocalized(text);
  CSingleLock lock(m_section);
  if (label != m_text)
  {
    StringUtils::Trim(label, "\n");
    m_text = label;
    SetInvalid();
  }
}
```

One thing I noticed is that Trim() does remove empty lines fine in DialogYesNo etc. but not in textboxes with static labels like ```<label>[CR][CR][CR]bla[CR][CR]</label>``` where it only works for the empty lines at the end. It's not a big deal though because you simply can remove the [CR].