sys: Fixed global shortcuts not working correctly

Fixes #606
This commit is contained in:
WerWolv
2022-07-30 22:01:49 +02:00
parent a097f162a7
commit 3d5568f65f
14 changed files with 63 additions and 30 deletions

View File

@@ -46,7 +46,6 @@ namespace hex::plugin::builtin {
bool taskRunning = Task::getRunningTaskCount() > 0;
if (ImGui::MenuItem("hex.builtin.menu.file.close"_lang, "CTRL + W", false, providerValid && !taskRunning)) {
EventManager::post<EventFileUnloaded>();
ImHexApi::Provider::remove(ImHexApi::Provider::get());
}

View File

@@ -0,0 +1,20 @@
#include <hex/api/keybinding.hpp>
#include <hex/api/event.hpp>
namespace hex::plugin::builtin {
void registerShortcuts() {
// Open file
ShortcutManager::addGlobalShortcut(CTRL + Keys::O, [] {
fs::openFileBrowser(fs::DialogMode::Open, {}, [](const auto &path) {
EventManager::post<RequestOpenFile>(path);
});
});
// Close file
ShortcutManager::addGlobalShortcut(CTRL + Keys::W, [] {
ImHexApi::Provider::remove(ImHexApi::Provider::get());
});
}
}

View File

@@ -37,7 +37,7 @@ namespace hex::plugin::builtin {
ProjectFile::setBookmarks(this->m_bookmarks);
});
EventManager::subscribe<EventFileUnloaded>(this, [this] {
EventManager::subscribe<EventProviderDeleted>(this, [this](const auto*) {
this->m_bookmarks.clear();
});
@@ -115,7 +115,7 @@ namespace hex::plugin::builtin {
EventManager::unsubscribe<RequestAddBookmark>(this);
EventManager::unsubscribe<EventProjectFileLoad>(this);
EventManager::unsubscribe<EventProjectFileStore>(this);
EventManager::unsubscribe<EventFileUnloaded>(this);
EventManager::unsubscribe<EventProviderDeleted>(this);
this->m_bookmarks.clear();
}

View File

@@ -22,7 +22,7 @@ namespace hex::plugin::builtin {
}
});
EventManager::subscribe<EventFileUnloaded>(this, [this] {
EventManager::subscribe<EventProviderDeleted>(this, [this](const auto*) {
this->m_disassembly.clear();
});
}
@@ -30,7 +30,7 @@ namespace hex::plugin::builtin {
ViewDisassembler::~ViewDisassembler() {
EventManager::unsubscribe<EventDataChanged>(this);
EventManager::unsubscribe<EventRegionSelected>(this);
EventManager::unsubscribe<EventFileUnloaded>(this);
EventManager::unsubscribe<EventProviderDeleted>(this);
}
void ViewDisassembler::disassemble() {

View File

@@ -1243,19 +1243,6 @@ namespace hex::plugin::builtin {
pasteBytes(selection);
});
// Open file
ShortcutManager::addGlobalShortcut(CTRL + Keys::O, [] {
fs::openFileBrowser(fs::DialogMode::Open, {}, [](const auto &path) {
EventManager::post<RequestOpenFile>(path);
});
});
// Close file
ShortcutManager::addGlobalShortcut(CTRL + Keys::W, [] {
EventManager::post<EventFileUnloaded>();
ImHexApi::Provider::remove(ImHexApi::Provider::get());
});
// Undo / Redo
ShortcutManager::addShortcut(this, CTRL + Keys::Z, [] {
if (ImHexApi::Provider::isValid())

View File

@@ -42,7 +42,7 @@ namespace hex::plugin::builtin {
this->m_entropyHandlePosition = region.address / this->m_blockSize;
});
EventManager::subscribe<EventFileUnloaded>(this, [this] {
EventManager::subscribe<EventProviderDeleted>(this, [this](const auto*) {
this->m_dataValid = false;
});
@@ -61,7 +61,7 @@ namespace hex::plugin::builtin {
ViewInformation::~ViewInformation() {
EventManager::unsubscribe<EventDataChanged>(this);
EventManager::unsubscribe<EventRegionSelected>(this);
EventManager::unsubscribe<EventFileUnloaded>(this);
EventManager::unsubscribe<EventProviderDeleted>(this);
}
static float calculateEntropy(std::array<ImU64, 256> &valueCounts, size_t blockSize) {

View File

@@ -150,8 +150,8 @@ namespace hex::plugin::builtin {
}
});
EventManager::subscribe<EventFileUnloaded>(this, [] {
ImHexApi::Provider::get()->getPatternLanguageRuntime().abort();
EventManager::subscribe<EventProviderDeleted>(this, [](auto *provider) {
provider->getPatternLanguageRuntime().abort();
});
EventManager::subscribe<EventProviderChanged>(this, [this](prv::Provider *oldProvider, prv::Provider *newProvider) {
@@ -283,7 +283,7 @@ namespace hex::plugin::builtin {
EventManager::unsubscribe<EventProjectFileLoad>(this);
EventManager::unsubscribe<RequestSetPatternLanguageCode>(this);
EventManager::unsubscribe<EventFileLoaded>(this);
EventManager::unsubscribe<EventFileUnloaded>(this);
EventManager::unsubscribe<EventProviderDeleted>(this);
EventManager::unsubscribe<RequestChangeTheme>(this);
EventManager::unsubscribe<EventProviderChanged>(this);
}

View File

@@ -19,6 +19,7 @@ namespace hex::plugin::builtin {
void registerMainMenuEntries();
void createWelcomeScreen();
void registerViews();
void registerShortcuts();
void addFooterItems();
void addToolbarItems();
@@ -62,6 +63,7 @@ IMHEX_PLUGIN_SETUP("Built-in", "WerWolv", "Default ImHex functionality") {
registerDataFormatters();
createWelcomeScreen();
registerViews();
registerShortcuts();
addFooterItems();
addToolbarItems();