Skip to content

Commit 2678cc1

Browse files
TaroEldLordMidas
authored andcommittedMar 2, 2025
feat: change rightclick to clear tooltipstack instead of locking tooltip
1 parent 6f717ae commit 2678cc1

File tree

2 files changed

+24
-20
lines changed

2 files changed

+24
-20
lines changed
 
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,3 @@
11
::MSU.QueueBucket.AfterHooks.push(function() {
2-
::MSU.Mod.Keybinds.addJSKeybind("LockTooltip", "rightclick", "Lock Tooltip (Mouse)", "Instantly locks a tooltip, skipping the timer. Use a MOUSE key.");
3-
::MSU.Mod.Keybinds.addJSKeybind("LockTooltipKeyboard", "ctrl+1", "Lock Tooltip (Keyboard)", "Instantly locks a tooltip, skipping the timer. UIse a KEYBOARD key.");
2+
::MSU.Mod.Keybinds.addJSKeybind("LockTooltipKeyboard", "ctrl", "Lock Tooltip", "Instantly locks a tooltip, skipping the timer. Use a KEYBOARD key, not the mouse.");
43
});

‎ui/mods/msu/nested_tooltips.js

+23-18
Original file line numberDiff line numberDiff line change
@@ -144,16 +144,12 @@ MSU.NestedTooltip = {
144144
MSU.NestedTooltip.Events.cancelTimer("HIDE");
145145

146146
var $element = $(event.currentTarget);
147-
148147
var data = $element.data("msu-nested");
149-
// Common source handling
150148
if (data === undefined) {
151149
MSU.NestedTooltip.Events.setTimer("SHOW", function() {
152150
MSU.NestedTooltip.onShowTooltipTimerExpired($element);
153151
});
154152
}
155-
156-
// MSU.NestedTooltip.Events.setTimer("HIDE", MSU.NestedTooltip.updateStack.bind(MSU.NestedTooltip));
157153
},
158154
onSourceLeave : function(event) {
159155
MSU.NestedTooltip.Events.cancelTimer("SHOW");
@@ -180,17 +176,8 @@ MSU.NestedTooltip = {
180176
MSU.NestedTooltip.Events.setTimer("HIDE", MSU.NestedTooltip.updateStack.bind(MSU.NestedTooltip));
181177
},
182178

183-
// Combined lock handler for both mouse and keyboard
184179
onLockRequest : function(event) {
185-
var isKeyboard = event.type === 'keydown';
186-
// check for item moving due to click
187-
var shouldLock = isKeyboard ?
188-
MSU.Keybinds.isKeybindPressed(MSU.ID, "LockTooltipKeyboard", event) :
189-
MSU.Keybinds.isMousebindPressed(MSU.ID, "LockTooltip");
190-
191-
if (!shouldLock){
192-
return;
193-
};
180+
if (!MSU.Keybinds.isKeybindPressed(MSU.ID, "LockTooltipKeyboard", event)) return;
194181

195182
var stackData = MSU.NestedTooltip.TooltipStack.peek();
196183
if (stackData == null) return;
@@ -201,7 +188,7 @@ MSU.NestedTooltip = {
201188
progressImage.velocity("finish");
202189
},
203190

204-
onTooltipClick : function(event) {
191+
onTooltipLeftClick : function(event) {
205192
if (event.which !== 1) return;
206193

207194
event.stopPropagation();
@@ -213,6 +200,23 @@ MSU.NestedTooltip = {
213200
}
214201
},
215202

203+
onTooltipRightClick : function(event) {
204+
if (event.which !== 3) return;
205+
MSU.NestedTooltip.TooltipStack.clear();
206+
var elementUnderCursor = $(document.elementFromPoint(event.clientX, event.clientY));
207+
var $elementUnderCursor = $(elementUnderCursor);
208+
var $tooltipSource = $elementUnderCursor.closest(".msu-tooltip-source, .msu-nested-tooltip-source");
209+
210+
if ($tooltipSource.length) {
211+
// Manually trigger mouseenter event
212+
var enterEvent = new jQuery.Event("mouseenter");
213+
enterEvent.clientX = event.clientX;
214+
enterEvent.clientY = event.clientY;
215+
enterEvent.currentTarget = elementUnderCursor;
216+
$tooltipSource.trigger(enterEvent);
217+
}
218+
},
219+
216220
// to confirm that we are still hovering an element, as .locked stuff isn't reliable. We should probably move this event handler to MSU.
217221
onMouseMove: function(event) {
218222
this.__lastMouseX = event.clientX;
@@ -246,7 +250,10 @@ MSU.NestedTooltip = {
246250
.on("keydown.msu-tooltip", this.onLockRequest)
247251

248252
// Click handling
249-
.on("mousedown.msu-tooltip", ".ui-control-tooltip-module", this.onTooltipClick);
253+
.on("mousedown.msu-tooltip", ".ui-control-tooltip-module", this.onTooltipLeftClick);
254+
255+
// this one we need to run outside
256+
document.addEventListener("mousedown", this.onTooltipRightClick, {"passive": true, "capture" : true});
250257
}
251258
},
252259
TileTooltipDiv : {
@@ -345,14 +352,12 @@ MSU.NestedTooltip = {
345352
this.unbindFromElement(_element);
346353
_element.data('msu-tooltip-parameters', _tooltipParams);
347354
_element.addClass('msu-tooltip-source');
348-
_element.on("mousedown.msu-tooltip", MSU.NestedTooltip.Events.onLockRequest);
349355
},
350356
unbindFromElement : function (_element)
351357
{
352358
_element.removeData("msu-nested");
353359
_element.removeData('msu-tooltip-parameters');
354360
_element.removeClass('msu-tooltip-source');
355-
_element.off("mousedown.msu-tooltip");
356361
},
357362
onShowTooltipTimerExpired : function(_sourceContainer)
358363
{

0 commit comments

Comments
 (0)