diff --git a/plugins/builtin/source/content/views/view_hex_editor.cpp b/plugins/builtin/source/content/views/view_hex_editor.cpp index b11eedcef..11b0c4bf9 100644 --- a/plugins/builtin/source/content/views/view_hex_editor.cpp +++ b/plugins/builtin/source/content/views/view_hex_editor.cpp @@ -1624,8 +1624,9 @@ namespace hex::plugin::builtin { // Popups ContentRegistry::Interface::addMenuItem("hex.builtin.menu.edit", 1200, [&] { - auto provider = ImHexApi::Provider::get(); - bool providerValid = ImHexApi::Provider::isValid(); + auto provider = ImHexApi::Provider::get(); + bool providerValid = ImHexApi::Provider::isValid(); + auto selection = ImHexApi::HexEditor::getSelection(); if (ImGui::MenuItem("hex.builtin.view.hex_editor.menu.edit.set_base"_lang, nullptr, false, providerValid && provider->isReadable())) { this->openPopup(provider->getBaseAddress()); @@ -1635,13 +1636,24 @@ namespace hex::plugin::builtin { this->openPopup(provider->getActualSize()); } - if (ImGui::MenuItem("hex.builtin.view.hex_editor.menu.edit.insert"_lang, nullptr, false, providerValid && provider->isResizable())) { - this->openPopup(this->getSelection().getStartAddress(), 0x00); + if (ImGui::MenuItem("hex.builtin.view.hex_editor.menu.edit.insert"_lang, nullptr, false, providerValid && provider->isResizable() && selection.has_value())) { + this->openPopup(selection->getStartAddress(), 0x00); } - if (ImGui::MenuItem("hex.builtin.view.hex_editor.menu.edit.remove"_lang, nullptr, false, providerValid && provider->isResizable())) { - auto selection = this->getSelection(); - this->openPopup(selection.getStartAddress(), selection.getSize()); + if (ImGui::MenuItem("hex.builtin.view.hex_editor.menu.edit.remove"_lang, nullptr, false, providerValid && provider->isResizable() && selection.has_value())) { + this->openPopup(selection->getStartAddress(), selection->getSize()); + } + + if (ImGui::MenuItem("hex.builtin.view.hex_editor.menu.edit.jump_to"_lang, nullptr, false, providerValid && provider->isResizable() && selection.has_value())) { + if (selection->getSize() <= sizeof(u64)) { + u64 value = 0; + provider->read(selection->getStartAddress(), &value, selection->getSize()); + + if (value < provider->getBaseAddress() + provider->getActualSize()) { + ImHexApi::HexEditor::setSelection(value, 1); + } + } + } }); } diff --git a/plugins/builtin/source/lang/de_DE.cpp b/plugins/builtin/source/lang/de_DE.cpp index b46bb5ece..6ca58e545 100644 --- a/plugins/builtin/source/lang/de_DE.cpp +++ b/plugins/builtin/source/lang/de_DE.cpp @@ -339,6 +339,8 @@ namespace hex::plugin::builtin { { "hex.builtin.view.hex_editor.menu.edit.set_base", "Basisadresse setzen" }, { "hex.builtin.view.hex_editor.menu.edit.resize", "Grösse ändern..." }, { "hex.builtin.view.hex_editor.menu.edit.insert", "Einsetzen..." }, + { "hex.builtin.view.hex_editor.menu.edit.remove", "Entfernen..." }, + { "hex.builtin.view.hex_editor.menu.edit.jump_to", "Springen" }, { "hex.builtin.view.information.name", "Dateninformationen" }, { "hex.builtin.view.information.control", "Einstellungen" }, diff --git a/plugins/builtin/source/lang/en_US.cpp b/plugins/builtin/source/lang/en_US.cpp index 003feeffa..1a699c8b2 100644 --- a/plugins/builtin/source/lang/en_US.cpp +++ b/plugins/builtin/source/lang/en_US.cpp @@ -343,6 +343,7 @@ namespace hex::plugin::builtin { { "hex.builtin.view.hex_editor.menu.edit.resize", "Resize..." }, { "hex.builtin.view.hex_editor.menu.edit.insert", "Insert..." }, { "hex.builtin.view.hex_editor.menu.edit.remove", "Remove..." }, + { "hex.builtin.view.hex_editor.menu.edit.jump_to", "Jump to" }, { "hex.builtin.view.information.name", "Data Information" }, { "hex.builtin.view.information.control", "Control" }, diff --git a/plugins/builtin/source/lang/it_IT.cpp b/plugins/builtin/source/lang/it_IT.cpp index 41a3095d5..00a121da3 100644 --- a/plugins/builtin/source/lang/it_IT.cpp +++ b/plugins/builtin/source/lang/it_IT.cpp @@ -344,6 +344,8 @@ namespace hex::plugin::builtin { { "hex.builtin.view.hex_editor.menu.edit.set_base", "Imposta indirizzo di base" }, { "hex.builtin.view.hex_editor.menu.edit.resize", "Ridimensiona..." }, { "hex.builtin.view.hex_editor.menu.edit.insert", "Inserisci..." }, + //{ "hex.builtin.view.hex_editor.menu.edit.remove", "Remove..." }, + //{ "hex.builtin.view.hex_editor.menu.edit.jump_to", "Jump to" }, { "hex.builtin.view.information.name", "Informazione sui Dati" }, { "hex.builtin.view.information.control", "Controllo" }, diff --git a/plugins/builtin/source/lang/ja_JP.cpp b/plugins/builtin/source/lang/ja_JP.cpp index ee83074ef..ea8b9d5ba 100644 --- a/plugins/builtin/source/lang/ja_JP.cpp +++ b/plugins/builtin/source/lang/ja_JP.cpp @@ -344,6 +344,8 @@ namespace hex::plugin::builtin { { "hex.builtin.view.hex_editor.menu.edit.set_base", "ベースアドレスをセット" }, { "hex.builtin.view.hex_editor.menu.edit.resize", "リサイズ…" }, { "hex.builtin.view.hex_editor.menu.edit.insert", "挿入…" }, + //{ "hex.builtin.view.hex_editor.menu.edit.remove", "Remove..." }, + //{ "hex.builtin.view.hex_editor.menu.edit.jump_to", "Jump to" }, { "hex.builtin.view.information.name", "データ解析" }, { "hex.builtin.view.information.control", "コントロール" }, diff --git a/plugins/builtin/source/lang/ko_KR.cpp b/plugins/builtin/source/lang/ko_KR.cpp index 058e1043d..561e5d1e6 100644 --- a/plugins/builtin/source/lang/ko_KR.cpp +++ b/plugins/builtin/source/lang/ko_KR.cpp @@ -342,6 +342,7 @@ namespace hex::plugin::builtin { { "hex.builtin.view.hex_editor.menu.edit.resize", "크기 변경..." }, { "hex.builtin.view.hex_editor.menu.edit.insert", "삽입..." }, { "hex.builtin.view.hex_editor.menu.edit.remove", "삭제..." }, + //{ "hex.builtin.view.hex_editor.menu.edit.jump_to", "Jump to" }, { "hex.builtin.view.information.name", "데이터 정보" }, { "hex.builtin.view.information.control", "컨트롤" }, diff --git a/plugins/builtin/source/lang/pt_BR.cpp b/plugins/builtin/source/lang/pt_BR.cpp index 5996c9777..48c453695 100644 --- a/plugins/builtin/source/lang/pt_BR.cpp +++ b/plugins/builtin/source/lang/pt_BR.cpp @@ -341,6 +341,8 @@ namespace hex::plugin::builtin { { "hex.builtin.view.hex_editor.menu.edit.set_base", "Definir endereço base" }, { "hex.builtin.view.hex_editor.menu.edit.resize", "Redimensionar..." }, { "hex.builtin.view.hex_editor.menu.edit.insert", "Inserir..." }, + //{ "hex.builtin.view.hex_editor.menu.edit.remove", "Remove..." }, + //{ "hex.builtin.view.hex_editor.menu.edit.jump_to", "Jump to" }, { "hex.builtin.view.information.name", "Data Information" }, { "hex.builtin.view.information.control", "Controle" }, diff --git a/plugins/builtin/source/lang/zh_CN.cpp b/plugins/builtin/source/lang/zh_CN.cpp index f90c715da..24c706bb5 100644 --- a/plugins/builtin/source/lang/zh_CN.cpp +++ b/plugins/builtin/source/lang/zh_CN.cpp @@ -345,6 +345,7 @@ namespace hex::plugin::builtin { { "hex.builtin.view.hex_editor.menu.edit.resize", "修改大小..." }, { "hex.builtin.view.hex_editor.menu.edit.insert", "插入..." }, { "hex.builtin.view.hex_editor.menu.edit.remove", "删除..." }, + //{ "hex.builtin.view.hex_editor.menu.edit.jump_to", "Jump to" }, { "hex.builtin.view.information.name", "数据信息" }, { "hex.builtin.view.information.control", "控制" }, diff --git a/plugins/builtin/source/lang/zh_TW.cpp b/plugins/builtin/source/lang/zh_TW.cpp index ade2fd4ab..d54f7f900 100644 --- a/plugins/builtin/source/lang/zh_TW.cpp +++ b/plugins/builtin/source/lang/zh_TW.cpp @@ -342,6 +342,7 @@ namespace hex::plugin::builtin { { "hex.builtin.view.hex_editor.menu.edit.resize", "縮放..." }, { "hex.builtin.view.hex_editor.menu.edit.insert", "插入..." }, { "hex.builtin.view.hex_editor.menu.edit.remove", "移除..." }, + //{ "hex.builtin.view.hex_editor.menu.edit.jump_to", "Jump to" }, { "hex.builtin.view.information.name", "資料資訊" }, { "hex.builtin.view.information.control", "控制" },