Fixed a bug in the new topic widget where no repaint event was triggered if only...
authorMarcus Eggenberger <egs@quassel-irc.org>
Tue, 11 Mar 2008 00:04:50 +0000 (00:04 +0000)
committerMarcus Eggenberger <egs@quassel-irc.org>
Tue, 11 Mar 2008 00:04:50 +0000 (00:04 +0000)
src/qtui/topicbutton.cpp
src/qtui/topicwidget.cpp
src/qtui/topicwidget.h

index ee91ad5..a83779e 100644 (file)
@@ -57,8 +57,11 @@ void TopicButton::paintEvent(QPaintEvent *event) {
 }
 
 void TopicButton::setAndStyleText(const QString &text) {
+  if(QAbstractButton::text() == text)
+    return;
+  setText(text); // this triggers a repaint event
+
   styledText = QtUi::style()->styleString(Message::mircToInternal(text));
-  setText(styledText.text);
   int height = 1;
   foreach(QTextLayout::FormatRange fr, styledText.formats) {
     height = qMax(height, QFontMetrics(fr.format.font()).height());
index ede4a71..511d275 100644 (file)
@@ -32,6 +32,10 @@ TopicWidget::TopicWidget(QWidget *parent)
 }
 
 void TopicWidget::setTopic(const QString &newtopic) {
+  if(_topic == newtopic)
+    return;
+  
+  _topic = newtopic;
   ui.topicButton->setAndStyleText(newtopic);
   ui.topicLineEdit->setText(newtopic);
   switchPlain();
@@ -65,6 +69,7 @@ bool TopicWidget::eventFilter(QObject *obj, QEvent *event) {
 
   if(keyEvent->key() == Qt::Key_Escape) {
     switchPlain();
+    ui.topicLineEdit->setText(_topic);
     return true;
   }
   
index 9492d84..c1bae92 100644 (file)
@@ -48,6 +48,8 @@ private slots:
   
 private:
   Ui::TopicWidget ui;
+
+  QString _topic;
 };