From de0d79493dad8bef6af435548401fccb7cedfe64 Mon Sep 17 00:00:00 2001 From: Sonny Piers Date: Sun, 14 Jan 2024 01:21:21 +0100 Subject: [PATCH] Fix blank preview on no code demos Fixes https://github.com/workbenchdev/Workbench/issues/812 --- demos | 2 +- src/Library/Library.js | 15 +++++++++++---- src/about.js | 2 +- src/application.js | 10 ++++++---- src/window.js | 26 ++++++++++---------------- 5 files changed, 29 insertions(+), 26 deletions(-) diff --git a/demos b/demos index 82ed6cadd..4fae7bab0 160000 --- a/demos +++ b/demos @@ -1 +1 @@ -Subproject commit 82ed6caddac38c1f75d15a3c54951e534274b01e +Subproject commit 4fae7bab00560c8ef0d8612c5688be75a3bf0921 diff --git a/src/Library/Library.js b/src/Library/Library.js index be6e5df8e..5f2f0c29e 100644 --- a/src/Library/Library.js +++ b/src/Library/Library.js @@ -92,16 +92,23 @@ async function openDemo({ application, demo_name, language }) { session.settings.set_boolean("show-code", true); } + const { autorun, languages } = demo; + // Override the user preferred language if the demo doesn't support it const lang = session.getCodeLanguage(); - if (demo.languages.length > 0 && !demo.languages.includes(lang.id)) { + if (languages.length > 0 && !languages.includes(lang.id)) { session.settings.set_int( "code-language", getLanguage(demo.languages[0]).index, ); } - const run = demo.autorun && session.getCodeLanguage().id === "javascript"; - const { load } = Window({ application, session }); - await load({ run }); + const { load, runCode } = Window({ application, session }); + await load(); + + const code_language = session.getCodeLanguage(); + const run = autorun && code_language.id === "javascript"; + if (run) { + await runCode(); + } } diff --git a/src/about.js b/src/about.js index 6f54213ca..5e9956ff6 100644 --- a/src/about.js +++ b/src/about.js @@ -33,7 +33,7 @@ ${getBlueprintVersion()} copyright: "© 2022 Sonny Piers", license_type: Gtk.License.GPL_3_0_ONLY, version: pkg.version, - website: "https://workbench.sonny.re", + website: "https://apps.gnome.org/Workbench", application_icon: pkg.name, issue_url: "https://github.com/workbenchdev/Workbench/issues", debug_info, diff --git a/src/application.js b/src/application.js index a987d53e3..a05f1f8d5 100644 --- a/src/application.js +++ b/src/application.js @@ -36,7 +36,7 @@ application.connect("open", (_self, files, hint) => { application, session, }); - load({ run: false }).catch(console.error); + load().catch(console.error); }); application.connect("startup", () => { @@ -59,7 +59,9 @@ application.connect("activate", () => { } }); -application.set_option_context_description(""); +application.set_option_context_description( + "", +); Actions({ application }); @@ -87,7 +89,7 @@ function restoreSessions() { application, session, }); - load({ run: false }).catch(console.error); + load().catch(console.error); }); } } @@ -106,7 +108,7 @@ function bootstrap() { session, }); window.maximize(); - load({ run: false }).catch(console.error); + load().catch(console.error); settings.set_boolean("first-run", false); } diff --git a/src/window.js b/src/window.js index 9d64baa4b..096639d57 100644 --- a/src/window.js +++ b/src/window.js @@ -230,7 +230,7 @@ export default function Window({ application, session }) { let compiler_rust = null; let builder_python = null; - async function runCode({ format }) { + async function runCode() { button_run.set_sensitive(false); term_console.clear(); @@ -240,9 +240,7 @@ export default function Window({ application, session }) { try { await panel_ui.update(); - if (format) { - await formatCode(); - } + await formatCode(); await compile(); } catch (err) { @@ -346,7 +344,7 @@ export default function Window({ application, session }) { name: "run", }); action_run.connect("activate", () => { - runCode({ format: true }).catch(console.error); + runCode().catch(console.error); }); window.add_action(action_run); application.set_accels_for_action("win.run", ["Return"]); @@ -380,7 +378,7 @@ export default function Window({ application, session }) { window.present(); const documents = Object.values(langs).map((lang) => lang.document); - async function load({ run }) { + async function load() { panel_ui.stop(); previewer.stop(); documents.forEach((document) => document.stop()); @@ -397,15 +395,11 @@ export default function Window({ application, session }) { await previewer.useInternal(); - if (run) { - await runCode({ format: false }); - } else { - term_console.clear(); - panel_ui.start(); - await panel_ui.update(); - previewer.start(); - await previewer.update(true); - } + term_console.clear(); + panel_ui.start(); + await panel_ui.update(); + previewer.start(); + await previewer.update(true); documents.forEach((document) => { document.start(); @@ -414,7 +408,7 @@ export default function Window({ application, session }) { term_console.scrollToEnd(); } - return { load, window }; + return { load, window, runCode }; } async function setGtk4PreferDark(dark) {