diff --git a/src/components/structures/MessagePanel.js b/src/components/structures/MessagePanel.js
index 7567786af3..230d136e04 100644
--- a/src/components/structures/MessagePanel.js
+++ b/src/components/structures/MessagePanel.js
@@ -346,9 +346,9 @@ export default class MessagePanel extends React.Component {
}
}
- _isUnmounting() {
+ _isUnmounting = () => {
return !this._isMounted;
- }
+ };
// TODO: Implement granular (per-room) hide options
_shouldShowEvent(mxEv) {
@@ -571,12 +571,10 @@ export default class MessagePanel extends React.Component {
const readReceipts = this._readReceiptsByEvent[eventId];
- // Dev note: `this._isUnmounting.bind(this)` is important - it ensures that
- // the function is run in the context of this class and not EventTile, therefore
- // ensuring the right `this._mounted` variable is used by read receipts (which
- // don't update their position if we, the MessagePanel, is unmounting).
+ // use txnId as key if available so that we don't remount during sending
ret.push(
-
@@ -590,7 +588,7 @@ export default class MessagePanel extends React.Component {
readReceipts={readReceipts}
readReceiptMap={this._readReceiptMap}
showUrlPreview={this.props.showUrlPreview}
- checkUnmounting={this._isUnmounting.bind(this)}
+ checkUnmounting={this._isUnmounting}
eventSendStatus={mxEv.getAssociatedStatus()}
tileShape={this.props.tileShape}
isTwelveHour={this.props.isTwelveHour}
diff --git a/src/components/views/rooms/EventTile.js b/src/components/views/rooms/EventTile.js
index f6eaf5f003..13554eb3d6 100644
--- a/src/components/views/rooms/EventTile.js
+++ b/src/components/views/rooms/EventTile.js
@@ -685,6 +685,9 @@ export default createReactClass({
mx_EventTile_emote: msgtype === 'm.emote',
});
+ // If the tile is in the Sending state, don't speak the message.
+ const ariaLive = (this.props.eventSendStatus !== null) ? 'off' : undefined;
+
let permalink = "#";
if (this.props.permalinkCreator) {
permalink = this.props.permalinkCreator.forEvent(this.props.mxEvent.getId());
@@ -819,7 +822,7 @@ export default createReactClass({
case 'notif': {
const room = this.context.getRoom(this.props.mxEvent.getRoomId());
return (
-