diff --git a/src/Tinter.js b/src/Tinter.js index f2a02b6e6d..b4a624e0ad 100644 --- a/src/Tinter.js +++ b/src/Tinter.js @@ -224,6 +224,7 @@ class Tinter { } setTheme(theme) { + console.trace("setTheme " + theme); this.theme = theme; // update keyRgb from the current theme CSS itself, if it defines it @@ -301,6 +302,8 @@ class Tinter { if (ss.disabled) continue; if (!ss.cssRules) continue; + if (DEBUG) console.debug("calcCssFixups checking " + ss.cssRules.length + " rules for " + ss.href); + for (let j = 0; j < ss.cssRules.length; j++) { const rule = ss.cssRules[j]; if (!rule.style) continue; diff --git a/src/components/structures/MatrixChat.js b/src/components/structures/MatrixChat.js index 7847e8e8dc..183db8a756 100644 --- a/src/components/structures/MatrixChat.js +++ b/src/components/structures/MatrixChat.js @@ -922,6 +922,11 @@ module.exports = React.createClass({ styleElements[theme].disabled = false; const switchTheme = function() { + // we re-enable our theme here just in case we raced with another + // theme set request as per https://github.com/vector-im/riot-web/issues/5601. + // We could alternatively lock or similar to stop the race, but + // this is probably good enough for now. + styleElements[theme].disabled = false; Object.values(styleElements).forEach((a) => { if (a == styleElements[theme]) return; a.disabled = true;