diff options
| author | Kevin Smith <git@kismith.co.uk> | 2011-10-11 17:17:42 (GMT) |
|---|---|---|
| committer | Kevin Smith <git@kismith.co.uk> | 2011-10-11 17:23:28 (GMT) |
| commit | a6375f56f0df8853914955d3a4b3f6cde8f0f88b (patch) | |
| tree | 4b14f6a8d4a4f9e9f19da8d786b58466330a6142 /Swift/QtUI/QtChatView.cpp | |
| parent | f48dc68662988b6eeb6544c2425c179b1f9b973d (diff) | |
| download | swift-contrib-a6375f56f0df8853914955d3a4b3f6cde8f0f88b.zip swift-contrib-a6375f56f0df8853914955d3a4b3f6cde8f0f88b.tar.bz2 | |
Fix DOM element finding for message correction
Diffstat (limited to 'Swift/QtUI/QtChatView.cpp')
| -rw-r--r-- | Swift/QtUI/QtChatView.cpp | 3 |
1 files changed, 3 insertions, 0 deletions
diff --git a/Swift/QtUI/QtChatView.cpp b/Swift/QtUI/QtChatView.cpp index 97ce992..1c3dd37 100644 --- a/Swift/QtUI/QtChatView.cpp +++ b/Swift/QtUI/QtChatView.cpp @@ -144,70 +144,73 @@ void QtChatView::replaceLastMessage(const QString& newMessage) { QWebElement replace = lastElement_.findFirst("span.swift_message"); assert(!replace.isNull()); QString old = lastElement_.toOuterXml(); replace.setInnerXml(ChatSnippet::escape(newMessage)); } void QtChatView::replaceLastMessage(const QString& newMessage, const QString& note) { rememberScrolledToBottom(); replaceLastMessage(newMessage); QWebElement replace = lastElement_.findFirst("span.swift_time"); assert(!replace.isNull()); replace.setInnerXml(ChatSnippet::escape(note)); } QString QtChatView::getLastSentMessage() { return lastElement_.toPlainText(); } void QtChatView::addToJSEnvironment(const QString& name, QObject* obj) { webView_->page()->currentFrame()->addToJavaScriptWindowObject(name, obj); } void QtChatView::replaceMessage(const QString& newMessage, const QString& id, const QDateTime& editTime) { rememberScrolledToBottom(); QWebElement message = document_.findFirst("#" + id); if (!message.isNull()) { QWebElement replaceContent = message.findFirst("span.swift_message"); assert(!replaceContent.isNull()); QString old = replaceContent.toOuterXml(); replaceContent.setInnerXml(ChatSnippet::escape(newMessage)); QWebElement replaceTime = message.findFirst("span.swift_time"); assert(!replaceTime.isNull()); old = replaceTime.toOuterXml(); replaceTime.setInnerXml(ChatSnippet::escape(tr("%1 edited").arg(ChatSnippet::timeToEscapedString(editTime)))); } + else { + qWarning() << "Trying to replace element with id " << id << " but it's not there."; + } } void QtChatView::copySelectionToClipboard() { if (!webPage_->selectedText().isEmpty()) { webPage_->triggerAction(QWebPage::Copy); } } void QtChatView::setAckXML(const QString& id, const QString& xml) { QWebElement message = document_.findFirst("#" + id); /* Deliberately not asserting here, so that when we start expiring old messages it won't hit us */ if (message.isNull()) return; QWebElement ackElement = message.findFirst("span.swift_ack"); assert(!ackElement.isNull()); ackElement.setInnerXml(xml); } void QtChatView::rememberScrolledToBottom() { isAtBottom_ = webPage_->mainFrame()->scrollBarValue(Qt::Vertical) == webPage_->mainFrame()->scrollBarMaximum(Qt::Vertical); } void QtChatView::scrollToBottom() { isAtBottom_ = true; webPage_->mainFrame()->setScrollBarValue(Qt::Vertical, webPage_->mainFrame()->scrollBarMaximum(Qt::Vertical)); webView_->update(); /* Work around redraw bug in some versions of Qt. */ } void QtChatView::handleFrameSizeChanged() { if (isAtBottom_) { scrollToBottom(); } } void QtChatView::handleLinkClicked(const QUrl& url) { QDesktopServices::openUrl(url); |
Swift