diff --git a/src/Keyboard.js b/src/Keyboard.js
index 8e6983fae5..bf83a1a05f 100644
--- a/src/Keyboard.js
+++ b/src/Keyboard.js
@@ -69,11 +69,11 @@ export function isOnlyCtrlOrCmdKeyEvent(ev) {
}
}
-export function isCtrlOrCmdKeyEvent(ev) {
+export function isOnlyCtrlOrCmdIgnoreShiftKeyEvent(ev) {
const isMac = navigator.platform.toUpperCase().indexOf('MAC') >= 0;
if (isMac) {
- return ev.metaKey && !ev.ctrlKey;
+ return ev.metaKey && !ev.altKey && !ev.ctrlKey;
} else {
- return ev.ctrlKey && !ev.metaKey;
+ return ev.ctrlKey && !ev.altKey && !ev.metaKey;
}
}
diff --git a/src/components/structures/LoggedInView.js b/src/components/structures/LoggedInView.js
index 38b7634edb..6f40aa559a 100644
--- a/src/components/structures/LoggedInView.js
+++ b/src/components/structures/LoggedInView.js
@@ -333,7 +333,6 @@ const LoggedInView = React.createClass({
{ SettingsStore.isFeatureEnabled("feature_tag_panel") ?
:
}
diff --git a/src/components/structures/UserSettings.js b/src/components/structures/UserSettings.js
index 09844c3d63..087b96c509 100644
--- a/src/components/structures/UserSettings.js
+++ b/src/components/structures/UserSettings.js
@@ -375,7 +375,7 @@ module.exports = React.createClass({
{ _t("For security, logging out will delete any end-to-end " +
"encryption keys from this browser. If you want to be able " +
"to decrypt your conversation history from future Riot sessions, " +
- "please export your room keys for safe-keeping.") }.
+ "please export your room keys for safe-keeping.") }
,
button: _t("Sign out"),
extraButtons: [
diff --git a/src/components/views/elements/TagTile.js b/src/components/views/elements/TagTile.js
index 2457bb1760..a98cca9609 100644
--- a/src/components/views/elements/TagTile.js
+++ b/src/components/views/elements/TagTile.js
@@ -20,7 +20,7 @@ import classNames from 'classnames';
import { MatrixClient } from 'matrix-js-sdk';
import sdk from '../../../index';
import dis from '../../../dispatcher';
-import { isCtrlOrCmdKeyEvent } from '../../../Keyboard';
+import { isOnlyCtrlOrCmdIgnoreShiftKeyEvent } from '../../../Keyboard';
import FlairStore from '../../../stores/FlairStore';
@@ -76,7 +76,7 @@ export default React.createClass({
dis.dispatch({
action: 'select_tag',
tag: this.props.tag,
- ctrlOrCmdKey: isCtrlOrCmdKeyEvent(e),
+ ctrlOrCmdKey: isOnlyCtrlOrCmdIgnoreShiftKeyEvent(e),
shiftKey: e.shiftKey,
});
},
diff --git a/src/components/views/rooms/MemberInfo.js b/src/components/views/rooms/MemberInfo.js
index cb6cb6c0f3..119355bc82 100644
--- a/src/components/views/rooms/MemberInfo.js
+++ b/src/components/views/rooms/MemberInfo.js
@@ -41,7 +41,6 @@ import AccessibleButton from '../elements/AccessibleButton';
import GeminiScrollbar from 'react-gemini-scrollbar';
import RoomViewStore from '../../../stores/RoomViewStore';
-
module.exports = withMatrixClient(React.createClass({
displayName: 'MemberInfo',
@@ -713,6 +712,10 @@ module.exports = withMatrixClient(React.createClass({
if (this.props.member.userId !== this.props.matrixClient.credentials.userId) {
const dmRoomMap = new DMRoomMap(this.props.matrixClient);
+ // dmRooms will not include dmRooms that we have been invited into but did not join.
+ // Because DMRoomMap runs off account_data[m.direct] which is only set on join of dm room.
+ // XXX: we potentially want DMs we have been invited to, to also show up here :L
+ // especially as logic below concerns specially if we haven't joined but have been invited
const dmRooms = dmRoomMap.getDMRoomsForUserId(this.props.member.userId);
const RoomTile = sdk.getComponent("rooms.RoomTile");
@@ -722,10 +725,15 @@ module.exports = withMatrixClient(React.createClass({
const room = this.props.matrixClient.getRoom(roomId);
if (room) {
const me = room.getMember(this.props.matrixClient.credentials.userId);
- const highlight = (
- room.getUnreadNotificationCount('highlight') > 0 ||
- me.membership === "invite"
- );
+
+ // not a DM room if we have are not joined
+ if (!me.membership || me.membership !== 'join') continue;
+ // not a DM room if they are not joined
+ const them = this.props.member;
+ if (!them.membership || them.membership !== 'join') continue;
+
+ const highlight = room.getUnreadNotificationCount('highlight') > 0 || me.membership === 'invite';
+
tiles.push(