Add workaround for TextEdit not rerendering after image loaded

fixes #541
pull/646/head
Nicolas Werner 4 years ago
parent 47899ee7ed
commit be0576f6a1
No known key found for this signature in database
GPG Key ID: C8D75E610773F2D9
  1. 5
      resources/qml/MatrixText.qml
  2. 10
      src/timeline/TimelineViewManager.cpp
  3. 4
      src/timeline/TimelineViewManager.h

@ -7,6 +7,7 @@ import QtQuick.Controls 2.3
import im.nheko 1.0
TextEdit {
id: r
textFormat: TextEdit.RichText
readOnly: true
focus: false
@ -24,4 +25,8 @@ TextEdit {
cursorShape: hoveredLink ? Qt.PointingHandCursor : Qt.ArrowCursor
}
Component.onCompleted: {
TimelineManager.fixImageRendering(r.textDocument, r)
}
}

@ -681,3 +681,13 @@ TimelineViewManager::forwardMessageToRoom(mtx::events::collections::TimelineEven
},
*e);
}
//! WORKAROUND(Nico): for https://bugreports.qt.io/browse/QTBUG-93281
void
TimelineViewManager::fixImageRendering(QQuickTextDocument *t, QQuickItem *i)
{
if (t) {
QObject::connect(
t->textDocument(), SIGNAL(imagesLoaded()), i, SLOT(updateWholeDocument()));
}
}

@ -5,6 +5,8 @@
#pragma once
#include <QHash>
#include <QQuickItem>
#include <QQuickTextDocument>
#include <QQuickView>
#include <QQuickWidget>
#include <QSharedPointer>
@ -68,6 +70,8 @@ public:
Q_INVOKABLE void openLeaveRoomDialog(QString roomid) const;
Q_INVOKABLE void removeVerificationFlow(DeviceVerificationFlow *flow);
Q_INVOKABLE void fixImageRendering(QQuickTextDocument *t, QQuickItem *i);
void verifyUser(QString userid);
void verifyDevice(QString userid, QString deviceid);

Loading…
Cancel
Save