FazBrowse GitHub Viewer | Trending |
URL:
| Home
Tools: [Download Repo ZIP]   [Original HTTPS Page]

Fix jumping tooltips on scroll issue · patternfly-java/patternfly-java@f3110d1 · GitHub

Commit f3110d1

Browse files
committed
Fix jumping tooltips on scroll issue
1 parent bbee3f6 commit f3110d1

1 file changed

Lines changed: 15 additions & 0 deletions

File tree

  • components/src/main/java/org/patternfly/component/tooltip

‎components/src/main/java/org/patternfly/component/tooltip/Tooltip2.java‎

Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -51,6 +51,7 @@
5151
import static org.jboss.elemento.EventType.focusout;
5252
import static org.jboss.elemento.EventType.mouseenter;
5353
import static org.jboss.elemento.EventType.mouseleave;
54+
import static org.jboss.elemento.EventType.scroll;
5455
import static org.patternfly.component.tooltip.TriggerAria.describedBy;
5556
import static org.patternfly.component.tooltip.TriggerAria.none;
5657
import static org.patternfly.core.Aria.live;
@@ -138,6 +139,7 @@ public static Tooltip2 tooltip2(Supplier<HTMLElement> trigger, String text) {
138139
private TriggerAria aria;
139140
private HandlerRegistration triggerHandlers;
140141
private HandlerRegistration anchorHandlers;
142+
private HandlerRegistration scrollHandler;
141143

142144
Tooltip2(Supplier<HTMLElement> trigger, String text) {
143145
super(ComponentType.Tooltip2, div().css(component(tooltip))
@@ -205,6 +207,9 @@ public void attach(MutationRecord mutationRecord) {
205207
anchorHandlers = compose(
206208
bind(element(), mouseenter, this::cancelTimers),
207209
bind(element(), mouseleave, this::scheduleHide));
210+
211+
// hide tooltip immediately on scroll to prevent jump artifacts
212+
scrollHandler = bind(window, scroll.name, this::hideOnScroll);
208213
} else {
209214
logger.error("Unable to find trigger element for tooltip %o", element());
210215
}
@@ -220,6 +225,9 @@ public void detach(MutationRecord mutationRecord) {
220225
element().hidePopover();
221226
visible = false;
222227
}
228+
if (scrollHandler != null) {
229+
scrollHandler.removeHandler();
230+
}
223231
if (anchorHandlers != null) {
224232
anchorHandlers.removeHandler();
225233
}
@@ -352,6 +360,13 @@ private void scheduleHide(Event event) {
352360
hideTimeout = setTimeout(e -> close(new Event(""), true), exitDelay);
353361
}
354362

363+
private void hideOnScroll(Event event) {
364+
cancelTimers(event);
365+
if (visible) {
366+
close(event, true);
367+
}
368+
}
369+
355370
private void cancelTimers(Event event) {
356371
clearTimeout(showTimeout);
357372
clearTimeout(hideTimeout);

0 commit comments

Comments
 (0)

Back | FazBrowse Home | New Git URL