diff --git a/CHANGELOG.md b/CHANGELOG.md
index c6a0f92e41..495f538aef 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -1,3 +1,9 @@
+Changes in [3.64.2](https://github.com/matrix-org/matrix-react-sdk/releases/tag/v3.64.2) (2023-01-20)
+=====================================================================================================
+
+## 🐛 Bug Fixes
+ * Fix second occurence of a crash in older browsers
+
Changes in [3.64.1](https://github.com/matrix-org/matrix-react-sdk/releases/tag/v3.64.1) (2023-01-18)
=====================================================================================================
diff --git a/package.json b/package.json
index cb17d44351..c5da640ee0 100644
--- a/package.json
+++ b/package.json
@@ -1,6 +1,6 @@
{
"name": "matrix-react-sdk",
- "version": "3.64.1",
+ "version": "3.64.2",
"description": "SDK for matrix.org using React",
"author": "matrix.org",
"repository": {
@@ -57,7 +57,7 @@
"dependencies": {
"@babel/runtime": "^7.12.5",
"@matrix-org/analytics-events": "^0.4.0",
- "@matrix-org/matrix-wysiwyg": "^0.19.0",
+ "@matrix-org/matrix-wysiwyg": "^0.20.0",
"@matrix-org/react-sdk-module-api": "^0.0.3",
"@sentry/browser": "^7.0.0",
"@sentry/tracing": "^7.0.0",
diff --git a/res/css/views/context_menus/_IconizedContextMenu.pcss b/res/css/views/context_menus/_IconizedContextMenu.pcss
index 677d4b2bb0..e6600620ac 100644
--- a/res/css/views/context_menus/_IconizedContextMenu.pcss
+++ b/res/css/views/context_menus/_IconizedContextMenu.pcss
@@ -84,7 +84,7 @@ limitations under the License.
align-items: center;
&:hover,
- &:focus {
+ &:focus-visible {
background-color: $menu-selected-color;
}
diff --git a/res/css/views/rooms/_RoomHeader.pcss b/res/css/views/rooms/_RoomHeader.pcss
index f1636055b1..c6ab2add22 100644
--- a/res/css/views/rooms/_RoomHeader.pcss
+++ b/res/css/views/rooms/_RoomHeader.pcss
@@ -108,7 +108,7 @@ limitations under the License.
display: flex;
user-select: none;
- &:not(.mx_RoomHeader_name--textonly):hover {
+ &:hover {
background-color: $quinary-content;
}
diff --git a/res/css/views/rooms/wysiwyg_composer/components/_Editor.pcss b/res/css/views/rooms/wysiwyg_composer/components/_Editor.pcss
index 21db71a774..cc805e1ac1 100644
--- a/res/css/views/rooms/wysiwyg_composer/components/_Editor.pcss
+++ b/res/css/views/rooms/wysiwyg_composer/components/_Editor.pcss
@@ -44,9 +44,21 @@ limitations under the License.
padding-inline-start: $spacing-28;
}
+ blockquote {
+ color: #777;
+ border-left: 2px solid $blockquote-bar-color;
+ border-radius: 2px;
+ padding: 0 10px;
+
+ margin-block-start: 0;
+ margin-block-end: 0;
+ margin-inline-start: 0;
+ margin-inline-end: 0;
+ }
+
// model output always includes a linebreak but we do not want the user
// to see it when writing input in lists
- :is(ol, ul, pre) + br:last-of-type {
+ :is(ol, ul, pre, blockquote) + br:last-of-type {
display: none;
}
diff --git a/res/css/views/voip/_CallDuration.pcss b/res/css/views/voip/_CallDuration.pcss
index c8dc07ef67..49524c88c6 100644
--- a/res/css/views/voip/_CallDuration.pcss
+++ b/res/css/views/voip/_CallDuration.pcss
@@ -17,4 +17,5 @@ limitations under the License.
.mx_CallDuration {
color: $secondary-content;
font-size: $font-12px;
+ white-space: nowrap;
}
diff --git a/res/css/views/voip/_CallView.pcss b/res/css/views/voip/_CallView.pcss
index 3e214a5b7b..72c5dc1839 100644
--- a/res/css/views/voip/_CallView.pcss
+++ b/res/css/views/voip/_CallView.pcss
@@ -160,7 +160,7 @@ limitations under the License.
content: "";
display: inline-block;
mask-image: url("$(res)/img/feather-customised/chevron-down.svg");
- mask-size: $size;
+ mask-size: 20px;
mask-position: center;
background-color: $call-primary-content;
height: 100%;
@@ -181,7 +181,7 @@ limitations under the License.
.mx_CallView_deviceButton {
&.mx_CallView_deviceButton_audio::before {
mask-image: url("$(res)/img/element-icons/Mic-off.svg");
- mask-size: 14px;
+ mask-size: 18px;
}
&.mx_CallView_deviceButton_video::before {
diff --git a/res/img/element-icons/room/composer/quote.svg b/res/img/element-icons/room/composer/quote.svg
new file mode 100644
index 0000000000..82cc2d2875
--- /dev/null
+++ b/res/img/element-icons/room/composer/quote.svg
@@ -0,0 +1,6 @@
+
diff --git a/src/components/views/rooms/MessageComposer.tsx b/src/components/views/rooms/MessageComposer.tsx
index f2a6e963f7..2d5f9cc99c 100644
--- a/src/components/views/rooms/MessageComposer.tsx
+++ b/src/components/views/rooms/MessageComposer.tsx
@@ -336,6 +336,7 @@ export class MessageComposer extends React.Component {
const { permalinkCreator, relation, replyToEvent } = this.props;
const composerContent = this.state.composerContent;
this.setState({ composerContent: "", initialComposerContent: "" });
+ dis.dispatch({ action: Action.ClearAndFocusSendMessageComposer });
await sendMessage(composerContent, this.state.isRichTextEnabled, {
mxClient: this.props.mxClient,
roomContext: this.context,
@@ -343,7 +344,6 @@ export class MessageComposer extends React.Component {
relation,
replyToEvent,
});
- dis.dispatch({ action: Action.ClearAndFocusSendMessageComposer });
}
};
diff --git a/src/components/views/rooms/RoomHeader.tsx b/src/components/views/rooms/RoomHeader.tsx
index 4dbec26caf..605298391f 100644
--- a/src/components/views/rooms/RoomHeader.tsx
+++ b/src/components/views/rooms/RoomHeader.tsx
@@ -743,6 +743,13 @@ export default class RoomHeader extends React.Component {
const buttons = this.props.showButtons ? this.renderButtons(isVideoRoom) : null;
+ let oobName = _t("Join Room");
+ if (this.props.oobData && this.props.oobData.name) {
+ oobName = this.props.oobData.name;
+ }
+
+ const name = this.renderName(oobName);
+
if (this.props.viewingCall && !isVideoRoom) {
return (
@@ -752,9 +759,7 @@ export default class RoomHeader extends React.Component {
>
{roomAvatar}
{icon}
-
- {_t("Video call")}
-
+ {name}
{this.props.activeCall instanceof ElementCall && (
)}
@@ -779,13 +784,6 @@ export default class RoomHeader extends React.Component {
);
}
- let oobName = _t("Join Room");
- if (this.props.oobData && this.props.oobData.name) {
- oobName = this.props.oobData.name;
- }
-
- const name = this.renderName(oobName);
-
const topicElement = ;
const viewLabs = (): void =>
diff --git a/src/components/views/rooms/wysiwyg_composer/components/FormattingButtons.tsx b/src/components/views/rooms/wysiwyg_composer/components/FormattingButtons.tsx
index c80857b9f1..80f2563d1d 100644
--- a/src/components/views/rooms/wysiwyg_composer/components/FormattingButtons.tsx
+++ b/src/components/views/rooms/wysiwyg_composer/components/FormattingButtons.tsx
@@ -22,6 +22,7 @@ import { Icon as BoldIcon } from "../../../../../../res/img/element-icons/room/c
import { Icon as ItalicIcon } from "../../../../../../res/img/element-icons/room/composer/italic.svg";
import { Icon as UnderlineIcon } from "../../../../../../res/img/element-icons/room/composer/underline.svg";
import { Icon as StrikeThroughIcon } from "../../../../../../res/img/element-icons/room/composer/strikethrough.svg";
+import { Icon as QuoteIcon } from "../../../../../../res/img/element-icons/room/composer/quote.svg";
import { Icon as InlineCodeIcon } from "../../../../../../res/img/element-icons/room/composer/inline_code.svg";
import { Icon as LinkIcon } from "../../../../../../res/img/element-icons/room/composer/link.svg";
import { Icon as BulletedListIcon } from "../../../../../../res/img/element-icons/room/composer/bulleted_list.svg";
@@ -126,6 +127,12 @@ export function FormattingButtons({ composer, actionStates }: FormattingButtonsP
onClick={() => composer.orderedList()}
icon={}
/>
+