More small tweaks to fix scrollbar behavior. This really sucks.
[quassel.git] / gui / buffer.cpp
index 2eeda62..3892ee9 100644 (file)
@@ -55,12 +55,15 @@ void Buffer::scrollToEnd() {
 }
 
 QWidget * Buffer::showWidget(QWidget *parent) {
-  if(widget) return qobject_cast<QWidget*>(widget);
+  if(widget) {
+    widget->scrollToEnd();
+    return qobject_cast<QWidget*>(widget);
+  }
   widget = new BufferWidget(networkName, bufferName, isActive(), ownNick, contents, parent); 
   widget->setTopic(topic);
   widget->updateNickList(nicks);
   //widget->renderContents();
-  widget->scrollToEnd();
+  //widget->scrollToEnd();
   connect(widget, SIGNAL(userInput(QString)), this, SLOT(userInput(QString)));
   return qobject_cast<QWidget*>(widget);
 }
@@ -128,6 +131,7 @@ BufferWidget::BufferWidget(QString netname, QString bufname, bool act, QString o
   connect(ui.inputEdit, SIGNAL(returnPressed()), this, SLOT(enterPressed()));
 
   ui.chatWidget->setFocusProxy(ui.inputEdit);
+  ui.chatWidget->setWordWrapMode(QTextOption::WrapAtWordBoundaryOrAnywhere);
 
   opsExpanded = voicedExpanded = usersExpanded = true;
 
@@ -146,9 +150,10 @@ BufferWidget::BufferWidget(QString netname, QString bufname, bool act, QString o
   int i = contents.count() - 100;
   if(i < 0) i = 0;
   for(int j = 0; j < i; j++) contents.removeAt(0);
+  show();
   renderContents();
   updateTitle();
-  show();
+  //show();
 }
 
 void BufferWidget::updateTitle() {
@@ -169,23 +174,29 @@ void BufferWidget::setActive(bool act) {
   if(act != active) {
     active = act;
     renderContents();
+    //scrollToEnd();
   }
 }
 
 void BufferWidget::renderContents() {
   QString html;
+  //html = "<style type=\"text/css\">"
+  //    ".test { background-color:#339933 }"
+  //    "</style>";
   for(int i = 0; i < contents.count(); i++) {
     html += htmlFromMsg(contents[i]);
   }
-  ui.chatWidget->clear();
-  ui.chatWidget->setHtml(html);
+  //ui.chatWidget->clear();
+  hide();
+  ui.chatWidget->setHtml(html); show();
+  //ui.chatWidget->insertHtml("<div />");  // <-- bug that would not reset the scrollbar sizes...
   scrollToEnd();
 }
 
 void BufferWidget::scrollToEnd() {
   QScrollBar *sb = ui.chatWidget->verticalScrollBar();
   sb->setValue(sb->maximum());
-  qDebug() << bufferName << "scrolled" << sb->value() << sb->maximum();
+  //qDebug() << bufferName << "scrolled" << sb->value() << sb->maximum();
 }
 
 QString BufferWidget::htmlFromMsg(Message msg) {