I can edit a cell
This commit is contained in:
@@ -14,6 +14,7 @@
|
||||
pendingMatches: [], // Array of matches waiting for timeout
|
||||
sequenceTimeout: 500, // 500ms timeout for sequences
|
||||
clickHandler: null,
|
||||
dblclickHandler: null, // Handler reference for dblclick
|
||||
contextmenuHandler: null,
|
||||
mousedownState: null, // Active drag state (only after movement detected)
|
||||
suppressNextClick: false, // Prevents click from firing after mousedown>mouseup
|
||||
@@ -35,7 +36,9 @@
|
||||
|
||||
// Handle aliases
|
||||
const aliasMap = {
|
||||
'rclick': 'right_click'
|
||||
'rclick': 'right_click',
|
||||
'double_click': 'dblclick',
|
||||
'dclick': 'dblclick'
|
||||
};
|
||||
|
||||
return aliasMap[normalized] || normalized;
|
||||
@@ -563,6 +566,43 @@
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Handle dblclick events (triggers for all registered elements).
|
||||
* Uses a fresh single-step history so it never conflicts with click sequences.
|
||||
* @param {MouseEvent} event - The dblclick event
|
||||
*/
|
||||
function handleDblClick(event) {
|
||||
const snapshot = createSnapshot(event, 'dblclick');
|
||||
const dblclickHistory = [snapshot];
|
||||
|
||||
const currentMatches = [];
|
||||
|
||||
for (const [elementId, data] of MouseRegistry.elements) {
|
||||
const element = document.getElementById(elementId);
|
||||
if (!element) continue;
|
||||
|
||||
const isInside = element.contains(event.target);
|
||||
const currentNode = traverseTree(data.tree, dblclickHistory);
|
||||
if (!currentNode || !currentNode.config) continue;
|
||||
|
||||
currentMatches.push({
|
||||
elementId: elementId,
|
||||
config: currentNode.config,
|
||||
combinationStr: currentNode.combinationStr,
|
||||
isInside: isInside
|
||||
});
|
||||
}
|
||||
|
||||
const anyMatchInside = currentMatches.some(m => m.isInside);
|
||||
if (anyMatchInside && !isInInputContext()) {
|
||||
event.preventDefault();
|
||||
}
|
||||
|
||||
for (const match of currentMatches) {
|
||||
triggerHtmxAction(match.elementId, match.config, match.combinationStr, match.isInside, event);
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Clean up mousedown state and safety timeout
|
||||
*/
|
||||
@@ -989,11 +1029,13 @@
|
||||
if (!MouseRegistry.listenerAttached) {
|
||||
// Store handler references for proper removal
|
||||
MouseRegistry.clickHandler = (e) => handleMouseEvent(e, 'click');
|
||||
MouseRegistry.dblclickHandler = (e) => handleDblClick(e);
|
||||
MouseRegistry.contextmenuHandler = (e) => handleMouseEvent(e, 'right_click');
|
||||
MouseRegistry.mousedownHandler = (e) => handleMouseDown(e);
|
||||
MouseRegistry.mouseupHandler = (e) => handleMouseUp(e);
|
||||
|
||||
document.addEventListener('click', MouseRegistry.clickHandler);
|
||||
document.addEventListener('dblclick', MouseRegistry.dblclickHandler);
|
||||
document.addEventListener('contextmenu', MouseRegistry.contextmenuHandler);
|
||||
document.addEventListener('mousedown', MouseRegistry.mousedownHandler);
|
||||
document.addEventListener('mouseup', MouseRegistry.mouseupHandler);
|
||||
@@ -1007,6 +1049,7 @@
|
||||
function detachGlobalListener() {
|
||||
if (MouseRegistry.listenerAttached) {
|
||||
document.removeEventListener('click', MouseRegistry.clickHandler);
|
||||
document.removeEventListener('dblclick', MouseRegistry.dblclickHandler);
|
||||
document.removeEventListener('contextmenu', MouseRegistry.contextmenuHandler);
|
||||
document.removeEventListener('mousedown', MouseRegistry.mousedownHandler);
|
||||
document.removeEventListener('mouseup', MouseRegistry.mouseupHandler);
|
||||
@@ -1014,6 +1057,7 @@
|
||||
|
||||
// Clean up handler references
|
||||
MouseRegistry.clickHandler = null;
|
||||
MouseRegistry.dblclickHandler = null;
|
||||
MouseRegistry.contextmenuHandler = null;
|
||||
MouseRegistry.mousedownHandler = null;
|
||||
MouseRegistry.mouseupHandler = null;
|
||||
|
||||
Reference in New Issue
Block a user