From 7c1a225be4e1a3dfd639efd0ef0d2dab31f4fe32 Mon Sep 17 00:00:00 2001 From: Mathias Jakobsen Date: Thu, 27 Nov 2025 09:05:29 +0000 Subject: [PATCH] Merge pull request #29899 from overleaf/mj-dark-mode-file-flash [web] Avoid background color flash when switching files GitOrigin-RevId: e5d2fbb631fd54d195b9cb51b2a9db584d205138 --- .../Features/Project/ProjectController.mjs | 80 +++++++++---------- .../settings/settings-editor-theme.tsx | 8 +- .../components/editor/editor-loading-pane.tsx | 25 ++++++ .../components/editor/editor-pane.tsx | 4 +- .../components/editor/loading-pane.tsx | 10 --- .../ide-redesign/components/editor.tsx | 4 +- .../editor-theme-setting.tsx | 8 +- .../source-editor/extensions/theme.ts | 3 +- services/web/frontend/js/utils/meta.ts | 4 +- .../stylesheets/pages/editor/file-view.scss | 5 ++ .../stylesheets/pages/editor/ide.scss | 11 +++ .../editor-left-menu.spec.tsx | 12 ++- .../settings/settings-editor-theme.test.tsx | 20 +++-- .../settings-modal/settings-modal.test.tsx | 12 ++- .../settings/editor-theme-setting.test.tsx | 24 ++++-- 15 files changed, 145 insertions(+), 85 deletions(-) create mode 100644 services/web/frontend/js/features/ide-react/components/editor/editor-loading-pane.tsx delete mode 100644 services/web/frontend/js/features/ide-react/components/editor/loading-pane.tsx diff --git a/services/web/app/src/Features/Project/ProjectController.mjs b/services/web/app/src/Features/Project/ProjectController.mjs index 6e7ec28b2b..064ebff3a3 100644 --- a/services/web/app/src/Features/Project/ProjectController.mjs +++ b/services/web/app/src/Features/Project/ProjectController.mjs @@ -1308,49 +1308,49 @@ const defaultUserValues = () => ({ }) const THEME_LIST = [ - 'cobalt', - 'dracula', - 'eclipse', - 'monokai', - 'overleaf', - 'overleaf_dark', - 'textmate', + { name: 'cobalt', dark: true }, + { name: 'dracula', dark: true }, + { name: 'eclipse', dark: false }, + { name: 'monokai', dark: true }, + { name: 'overleaf', dark: false }, + { name: 'overleaf_dark', dark: true }, + { name: 'textmate', dark: false }, ] const LEGACY_THEME_LIST = [ - 'ambiance', - 'chaos', - 'chrome', - 'clouds', - 'clouds_midnight', - 'crimson_editor', - 'dawn', - 'dreamweaver', - 'github', - 'gob', - 'gruvbox', - 'idle_fingers', - 'iplastic', - 'katzenmilch', - 'kr_theme', - 'kuroir', - 'merbivore', - 'merbivore_soft', - 'mono_industrial', - 'nord_dark', - 'pastel_on_dark', - 'solarized_dark', - 'solarized_light', - 'sqlserver', - 'terminal', - 'tomorrow', - 'tomorrow_night', - 'tomorrow_night_blue', - 'tomorrow_night_bright', - 'tomorrow_night_eighties', - 'twilight', - 'vibrant_ink', - 'xcode', + { name: 'ambiance', dark: true }, + { name: 'chaos', dark: true }, + { name: 'chrome', dark: false }, + { name: 'clouds', dark: false }, + { name: 'clouds_midnight', dark: true }, + { name: 'crimson_editor', dark: false }, + { name: 'dawn', dark: false }, + { name: 'dreamweaver', dark: false }, + { name: 'github', dark: false }, + { name: 'gob', dark: true }, + { name: 'gruvbox', dark: true }, + { name: 'idle_fingers', dark: true }, + { name: 'iplastic', dark: false }, + { name: 'katzenmilch', dark: false }, + { name: 'kr_theme', dark: true }, + { name: 'kuroir', dark: false }, + { name: 'merbivore', dark: true }, + { name: 'merbivore_soft', dark: true }, + { name: 'mono_industrial', dark: true }, + { name: 'nord_dark', dark: true }, + { name: 'pastel_on_dark', dark: true }, + { name: 'solarized_dark', dark: true }, + { name: 'solarized_light', dark: false }, + { name: 'sqlserver', dark: false }, + { name: 'terminal', dark: true }, + { name: 'tomorrow', dark: false }, + { name: 'tomorrow_night', dark: true }, + { name: 'tomorrow_night_blue', dark: true }, + { name: 'tomorrow_night_bright', dark: true }, + { name: 'tomorrow_night_eighties', dark: true }, + { name: 'twilight', dark: true }, + { name: 'vibrant_ink', dark: true }, + { name: 'xcode', dark: false }, ] const ProjectController = { diff --git a/services/web/frontend/js/features/editor-left-menu/components/settings/settings-editor-theme.tsx b/services/web/frontend/js/features/editor-left-menu/components/settings/settings-editor-theme.tsx index 870ce48ca1..e8c50c86a6 100644 --- a/services/web/frontend/js/features/editor-left-menu/components/settings/settings-editor-theme.tsx +++ b/services/web/frontend/js/features/editor-left-menu/components/settings/settings-editor-theme.tsx @@ -14,8 +14,8 @@ export default function SettingsEditorTheme() { const options = useMemo(() => { const editorThemeOptions: Array