diff --git a/platform/platform-api/src/com/intellij/ui/components/DefaultScrollBarUI.java b/platform/platform-api/src/com/intellij/ui/components/DefaultScrollBarUI.java index 1419aab3190d..8517b716812b 100644 --- a/platform/platform-api/src/com/intellij/ui/components/DefaultScrollBarUI.java +++ b/platform/platform-api/src/com/intellij/ui/components/DefaultScrollBarUI.java @@ -460,6 +460,7 @@ class DefaultScrollBarUI extends ScrollBarUI { public void mouseReleased(MouseEvent event) { if (isDragging) updateMouse(event.getX(), event.getY()); if (myScrollBar == null || !myScrollBar.isEnabled()) return; + myScrollBar.setValueIsAdjusting(false); if (redispatchIfTrackNotClickable(event)) return; if (SwingUtilities.isRightMouseButton(event)) return; isDragging = false; @@ -467,7 +468,6 @@ class DefaultScrollBarUI extends ScrollBarUI { myScrollTimer.stop(); isValueCached = true; myCachedValue = myScrollBar.getValue(); - myScrollBar.setValueIsAdjusting(false); repaint(); } diff --git a/platform/platform-api/src/com/intellij/ui/tabs/impl/JBTabsImpl.kt b/platform/platform-api/src/com/intellij/ui/tabs/impl/JBTabsImpl.kt index 76450e21127d..037e8d121756 100644 --- a/platform/platform-api/src/com/intellij/ui/tabs/impl/JBTabsImpl.kt +++ b/platform/platform-api/src/com/intellij/ui/tabs/impl/JBTabsImpl.kt @@ -154,6 +154,8 @@ open class JBTabsImpl( } } + private final val RELAYOUT_DELAY = 5000 + private val visibleInfos = ArrayList() private val infoToPage = HashMap() private val hiddenInfos = HashMap() @@ -393,6 +395,8 @@ open class JBTabsImpl( scrollBarChangeListener = ChangeListener { updateTabsOffsetFromScrollBar() } } + fun isScrollBarAdjusting(): Boolean = scrollBar.valueIsAdjusting + private fun addMouseMotionAwtListener(parentDisposable: Disposable) { StartupUiUtil.addAwtListener(object : AWTEventListener { val afterScroll = Alarm(parentDisposable) @@ -419,7 +423,7 @@ open class JBTabsImpl( if (!isMouseInsideTabsArea) { relayout(false, false) } - }, 500) + }, RELAYOUT_DELAY) } } }, AWTEvent.MOUSE_MOTION_EVENT_MASK, parentDisposable) @@ -539,8 +543,10 @@ open class JBTabsImpl( fun unHover(label: TabLabel) { if (tabLabelAtMouse === label) { tabLabelAtMouse = null - label.revalidate() - label.repaint() + Alarm().addRequest({ + label.revalidate() + label.repaint() + }, RELAYOUT_DELAY) } } diff --git a/platform/platform-api/src/com/intellij/ui/tabs/impl/multiRow/ScrollableMultiRowLayout.kt b/platform/platform-api/src/com/intellij/ui/tabs/impl/multiRow/ScrollableMultiRowLayout.kt index 9bef1a256060..2c099c6fda95 100644 --- a/platform/platform-api/src/com/intellij/ui/tabs/impl/multiRow/ScrollableMultiRowLayout.kt +++ b/platform/platform-api/src/com/intellij/ui/tabs/impl/multiRow/ScrollableMultiRowLayout.kt @@ -11,7 +11,7 @@ class ScrollableMultiRowLayout(tabs: JBTabsImpl, private var scrollOffset: Int = 0 override fun layoutTable(visibleInfos: List): LayoutPassInfo { - if (!tabs.isMouseInsideTabsArea && !tabs.isHideTabs) { + if (!tabs.isMouseInsideTabsArea && !tabs.isHideTabs && !tabs.isScrollBarAdjusting()) { scrollToSelectedTab() } return super.layoutTable(visibleInfos) diff --git a/platform/platform-api/src/com/intellij/ui/tabs/impl/singleRow/ScrollableSingleRowLayout.java b/platform/platform-api/src/com/intellij/ui/tabs/impl/singleRow/ScrollableSingleRowLayout.java index fb9b99b125e9..7309d9c241bb 100644 --- a/platform/platform-api/src/com/intellij/ui/tabs/impl/singleRow/ScrollableSingleRowLayout.java +++ b/platform/platform-api/src/com/intellij/ui/tabs/impl/singleRow/ScrollableSingleRowLayout.java @@ -62,7 +62,7 @@ public final class ScrollableSingleRowLayout extends SingleRowLayout { } private void doScrollToSelectedTab(SingleRowPassInfo passInfo) { - if (myTabs.isMouseInsideTabsArea()) { + if (myTabs.isMouseInsideTabsArea() || myTabs.isScrollBarAdjusting()) { return; } int offset = -myScrollOffset;