From a496b14a0f74144e5d75f66856c3c0e947984219 Mon Sep 17 00:00:00 2001 From: WerWolv Date: Sun, 28 Dec 2025 18:17:38 +0100 Subject: [PATCH] impr: Add setting for task-finish notifications --- main/gui/CMakeLists.txt | 1 + plugins/builtin/romfs/lang/en_US.json | 2 ++ plugins/builtin/source/content/events.cpp | 4 ++++ plugins/builtin/source/content/settings_entries.cpp | 2 ++ 4 files changed, 9 insertions(+) diff --git a/main/gui/CMakeLists.txt b/main/gui/CMakeLists.txt index a44e0e46b..e746f8f5b 100644 --- a/main/gui/CMakeLists.txt +++ b/main/gui/CMakeLists.txt @@ -44,6 +44,7 @@ if (EMSCRIPTEN) target_link_options(main PRIVATE -sGL_UNSAFE_OPTS=0) target_link_options(main PRIVATE -sEXPORTED_RUNTIME_METHODS=ccall) target_link_options(main PRIVATE -sFETCH) + target_link_options(main PRIVATE -sASSERTIONS) target_link_options(main PRIVATE -sWASM_BIGINT) target_link_options(main PRIVATE -O2) target_link_options(main PRIVATE -fsanitize=null) diff --git a/plugins/builtin/romfs/lang/en_US.json b/plugins/builtin/romfs/lang/en_US.json index cacded47e..71831b67a 100644 --- a/plugins/builtin/romfs/lang/en_US.json +++ b/plugins/builtin/romfs/lang/en_US.json @@ -556,6 +556,8 @@ "hex.builtin.setting.interface.scaling.native": "Native", "hex.builtin.setting.interface.scaling.fractional_warning": "The default font does not support fractional scaling. For better results, select a custom font in the 'Font' tab.", "hex.builtin.setting.interface.show_header_command_palette": "Show Command Palette in Window Header", + "hex.builtin.setting.interface.show_task_finish_notification": "Show task completion notifications", + "hex.builtin.setting.interface.show_task_finish_notification.desc": "Should a notification be shown when a long-running task finishes while ImHex is in the background?", "hex.builtin.setting.interface.show_titlebar_backdrop": "Show titlebar backdrop color", "hex.builtin.setting.interface.style": "Styling", "hex.builtin.setting.interface.use_native_menu_bar": "Use native menu bar", diff --git a/plugins/builtin/source/content/events.cpp b/plugins/builtin/source/content/events.cpp index a5b810ab3..76964fc09 100644 --- a/plugins/builtin/source/content/events.cpp +++ b/plugins/builtin/source/content/events.cpp @@ -427,7 +427,11 @@ namespace hex::plugin::builtin { #endif }); + static ContentRegistry::Settings::SettingsVariable taskFinishedNotificationEnabled = false; TaskManager::addTaskCompletionCallback([](Task &task) { + if (!taskFinishedNotificationEnabled) + return; + if (!glfwGetWindowAttrib(ImHexApi::System::getMainWindowHandle(), GLFW_FOCUSED) && !task.isBackgroundTask()) hex::showToastMessage("ImHex", fmt::format("hex.builtin.os_toast_message.task_finished"_lang, Lang(task.getUnlocalizedName()))); }); diff --git a/plugins/builtin/source/content/settings_entries.cpp b/plugins/builtin/source/content/settings_entries.cpp index 270892755..b32ad40d2 100644 --- a/plugins/builtin/source/content/settings_entries.cpp +++ b/plugins/builtin/source/content/settings_entries.cpp @@ -891,6 +891,8 @@ for (const auto &path : m_paths) { ContentRegistry::Settings::add("hex.builtin.setting.interface", "hex.builtin.setting.interface.window", "hex.builtin.setting.interface.randomize_window_title", false); ContentRegistry::Settings::add("hex.builtin.setting.interface", "hex.builtin.setting.interface.window", "hex.builtin.setting.interface.restore_window_pos", false); + ContentRegistry::Settings::add("hex.builtin.setting.interface", "hex.builtin.setting.interface.window", "hex.builtin.setting.interface.show_task_finish_notification", true) + .setTooltip("hex.builtin.setting.interface.show_task_finish_notification.desc"); ContentRegistry::Settings::add("hex.builtin.setting.hex_editor", "", "hex.builtin.setting.hex_editor.highlight_color", ImColor(0x80, 0x80, 0xC0, 0x60)); ContentRegistry::Settings::add("hex.builtin.setting.hex_editor", "", "hex.builtin.setting.hex_editor.sync_scrolling", false);