1
0
mirror of synced 2024-11-12 02:00:52 +01:00

web: Trigger right click when long touching area

This commit is contained in:
WerWolv 2024-07-04 23:15:33 +02:00
parent c79321b550
commit 5d53417683
5 changed files with 34 additions and 4 deletions

View File

@ -187,6 +187,36 @@ var Module = {
e.preventDefault(); e.preventDefault();
}, false); }, false);
// Turn long touches into right-clicks
let timer = null;
canvas.addEventListener('touchstart', event => {
timer = setTimeout(() => {
let eventArgs = {
bubbles: true,
cancelable: true,
view: window,
screenX: event.touches[0].screenX,
screenY: event.touches[0].screenY,
clientX: event.touches[0].clientX,
clientY: event.touches[0].clientY,
button: 2,
buttons: 2,
relatedTarget: event.target,
region: event.region
}
canvas.dispatchEvent(new MouseEvent('mousedown', eventArgs));
canvas.dispatchEvent(new MouseEvent('mouseup', eventArgs));
}, 400);
});
canvas.addEventListener('touchend', event => {
if (timer) {
clearTimeout(timer);
timer = null;
}
});
if (typeof WebGL2RenderingContext !== 'undefined') { if (typeof WebGL2RenderingContext !== 'undefined') {
let gl = canvas.getContext('webgl2', { stencil: true }); let gl = canvas.getContext('webgl2', { stencil: true });
if (!gl) { if (!gl) {

View File

@ -492,7 +492,7 @@ namespace hex::plugin::builtin {
break; break;
} }
if (ImGui::IsMouseDown(ImGuiMouseButton_Right) && ImGui::IsItemHovered()) { if (ImGui::IsMouseDown(ImGuiMouseButton_Right) && ImGui::IsItemHovered() && !ImGui::IsMouseDragging(ImGuiMouseButton_Right)) {
rightClickedProvider = tabProvider; rightClickedProvider = tabProvider;
RequestOpenPopup::post("ProviderMenu"); RequestOpenPopup::post("ProviderMenu");
} }

View File

@ -597,7 +597,7 @@ namespace hex::plugin::builtin {
void ViewDataProcessor::drawContextMenus(ViewDataProcessor::Workspace &workspace) { void ViewDataProcessor::drawContextMenus(ViewDataProcessor::Workspace &workspace) {
// Handle the right click context menus // Handle the right click context menus
if (ImGui::IsMouseDown(ImGuiMouseButton_Right) && ImGui::IsWindowHovered(ImGuiHoveredFlags_ChildWindows)) { if (ImGui::IsMouseDown(ImGuiMouseButton_Right) && ImGui::IsWindowHovered(ImGuiHoveredFlags_ChildWindows) && !ImGui::IsMouseDragging(ImGuiMouseButton_Right)) {
// Clear selections // Clear selections
ImNodes::ClearNodeSelection(); ImNodes::ClearNodeSelection();
ImNodes::ClearLinkSelection(); ImNodes::ClearLinkSelection();

View File

@ -629,7 +629,7 @@ namespace hex::plugin::builtin {
ImGui::PopStyleVar(); ImGui::PopStyleVar();
// Right click menu // Right click menu
if (ImGui::IsMouseDown(ImGuiMouseButton_Right) && ImGui::IsWindowHovered(ImGuiHoveredFlags_ChildWindows) && !ImGui::IsAnyItemHovered()) if (ImGui::IsMouseDown(ImGuiMouseButton_Right) && ImGui::IsWindowHovered(ImGuiHoveredFlags_ChildWindows) && !ImGui::IsAnyItemHovered() && !ImGui::IsMouseDragging(ImGuiMouseButton_Right))
RequestOpenPopup::post("hex.builtin.menu.edit"); RequestOpenPopup::post("hex.builtin.menu.edit");
} }

View File

@ -231,7 +231,7 @@ namespace hex::plugin::builtin {
m_textEditor.Render("hex.builtin.view.pattern_editor.name"_lang, textEditorSize, true); m_textEditor.Render("hex.builtin.view.pattern_editor.name"_lang, textEditorSize, true);
TextEditor::FindReplaceHandler *findReplaceHandler = m_textEditor.GetFindReplaceHandler(); TextEditor::FindReplaceHandler *findReplaceHandler = m_textEditor.GetFindReplaceHandler();
if (ImGui::IsItemClicked(ImGuiMouseButton_Right)) { if (ImGui::IsMouseDown(ImGuiMouseButton_Right) && ImGui::IsWindowHovered(ImGuiHoveredFlags_ChildWindows) && !ImGui::IsMouseDragging(ImGuiMouseButton_Right)) {
ImGui::OpenPopup("##pattern_editor_context_menu"); ImGui::OpenPopup("##pattern_editor_context_menu");
} }