summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
Diffstat (limited to 'Swift/QtUI')
-rw-r--r--Swift/QtUI/QtChatView.cpp19
-rw-r--r--Swift/QtUI/QtChatView.h4
2 files changed, 15 insertions, 8 deletions
diff --git a/Swift/QtUI/QtChatView.cpp b/Swift/QtUI/QtChatView.cpp
index 3324108..6b38309 100644
--- a/Swift/QtUI/QtChatView.cpp
+++ b/Swift/QtUI/QtChatView.cpp
@@ -68,6 +68,14 @@ void QtChatView::handleKeyPressEvent(QKeyEvent* event) {
}
void QtChatView::addMessage(const ChatSnippet& snippet) {
+ if (viewReady_) {
+ appendToView(snippet);
+ } else {
+ queuedSnippets_.append(snippet);
+ }
+}
+
+void QtChatView::appendToView(const ChatSnippet& snippet) {
//bool wasScrolledToBottom = isScrolledToBottom();
QString content = snippet.getContent();
@@ -82,12 +90,7 @@ void QtChatView::addMessage(const ChatSnippet& snippet) {
else {
command = "appendNextMessage(\"" + content + "\");";
}
- if (viewReady_) {
- webPage_->mainFrame()->evaluateJavaScript(command);
- }
- else {
- queuedMessages_ += command;
- }
+ webPage_->mainFrame()->evaluateJavaScript(command);
//qDebug() << webPage_->mainFrame()->toHtml();
previousContinuationElementID_ = snippet.getContinuationElementID();
@@ -118,7 +121,9 @@ void QtChatView::handleLinkClicked(const QUrl& url) {
void QtChatView::handleViewLoadFinished(bool ok) {
Q_ASSERT(ok);
viewReady_ = true;
- webPage_->mainFrame()->evaluateJavaScript(queuedMessages_);
+ foreach (const ChatSnippet& snippet, queuedSnippets_) {
+ appendToView(snippet);
+ }
queuedMessages_.clear();
}
diff --git a/Swift/QtUI/QtChatView.h b/Swift/QtUI/QtChatView.h
index ea64265..a5b6b4a 100644
--- a/Swift/QtUI/QtChatView.h
+++ b/Swift/QtUI/QtChatView.h
@@ -9,6 +9,7 @@
#include <QString>
#include <QWidget>
+#include <QList>
#include "ChatSnippet.h"
@@ -35,11 +36,12 @@ namespace Swift {
void handleViewLoadFinished(bool);
private:
+ void appendToView(const ChatSnippet& snippet);
bool viewReady_;
QtWebView* webView_;
QWebPage* webPage_;
QString previousContinuationElementID_;
- QString queuedMessages_;
+ QList<ChatSnippet> queuedSnippets_;
};
}