OpherV / gitflow4idea

Git Flow Integration plugin for IntelliJ
Apache License 2.0
504 stars 138 forks source link

Version 0.7.2 causes that Active Tool Windows only is showed in one project if you have several open #301

Closed ccervigon closed 4 years ago

ccervigon commented 4 years ago
  1. Open IntelliJ
  2. Open one project (this has active tool window)
  3. Open several more projects in a new window (this hasn't active tool windows)

IntelliJ IDEA 2020.1.1 (Ultimate Edition) Build #IU-201.7223.91, built on April 30, 2020 Runtime version: 11.0.6+8-b765.40 amd64 VM: OpenJDK 64-Bit Server VM by JetBrains s.r.o Windows 10 10.0 GC: ParNew, ConcurrentMarkSweep Memory: 1933M Cores: 8 Non-Bundled Plugins: CMD Support, org.jetbrains.plugins.hocon, mobi.hsz.idea.gitignore, io.protostuff.protostuff-jetbrains-plugin, net.seesharpsoft.intellij.plugins.csv, org.intellij.scala, com.intellij.bigdatatools, Pythonid

OpherV commented 4 years ago

What do you mean by "Active Tool Windows only is showed in one project if you have several open"?

ccervigon commented 4 years ago

If you open one project you can see the Active Tool Windows. image but when you open several more, they don't have it. image

It only occurs when you open one more project keeping the first one also open.

OpherV commented 4 years ago

Found the issue, thanks for the report. relevant stack trace

java.lang.AssertionError: Cannot install widget from one project on status bar of another project
    at com.intellij.openapi.wm.impl.status.EditorBasedWidget.install(EditorBasedWidget.java:93)
    at com.intellij.dvcs.ui.DvcsStatusWidget.install(DvcsStatusWidget.java:74)
    at com.intellij.openapi.wm.impl.status.IdeStatusBarImpl.addWidget(IdeStatusBarImpl.java:296)
    at com.intellij.openapi.wm.impl.status.IdeStatusBarImpl.lambda$addWidget$1(IdeStatusBarImpl.java:204)
    at com.intellij.util.ui.UIUtil.invokeLaterIfNeeded(UIUtil.java:2319)
    at com.intellij.openapi.wm.impl.status.IdeStatusBarImpl.addWidget(IdeStatusBarImpl.java:204)
    at com.intellij.openapi.wm.impl.status.IdeStatusBarImpl.addWidget(IdeStatusBarImpl.java:216)
    at com.intellij.openapi.wm.impl.status.widget.StatusBarWidgetsManager.enableWidget(StatusBarWidgetsManager.java:129)
    at com.intellij.openapi.wm.impl.status.widget.StatusBarWidgetsManager.updateWidget(StatusBarWidgetsManager.java:77)
    at com.intellij.openapi.wm.impl.status.widget.StatusBarWidgetsManager.updateAllWidgets(StatusBarWidgetsManager.java:61)
    at com.intellij.openapi.wm.impl.ProjectFrameHelper.installDefaultProjectStatusBarWidgets(ProjectFrameHelper.java:400)
    at com.intellij.openapi.wm.impl.ProjectFrameHelper.setProject(ProjectFrameHelper.java:383)
    at com.intellij.openapi.wm.impl.WindowManagerImpl.assignFrame(WindowManagerImpl.java:517)
    at com.intellij.platform.ProjectUiFrameAllocator$projectLoaded$1.run(ProjectFrameAllocator.kt:183)
    at com.intellij.openapi.application.TransactionGuardImpl$2.run(TransactionGuardImpl.java:201)
    at com.intellij.openapi.application.impl.ApplicationImpl.runIntendedWriteActionOnCurrentThread(ApplicationImpl.java:831)
    at com.intellij.openapi.application.impl.ApplicationImpl.lambda$invokeLater$4(ApplicationImpl.java:310)
    at com.intellij.openapi.application.impl.FlushQueue.doRun(FlushQueue.java:80)
    at com.intellij.openapi.application.impl.FlushQueue.runNextEvent(FlushQueue.java:128)
    at com.intellij.openapi.application.impl.FlushQueue.flushNow(FlushQueue.java:46)
    at com.intellij.openapi.application.impl.FlushQueue$FlushNow.run(FlushQueue.java:184)
    at java.desktop/java.awt.event.InvocationEvent.dispatch(InvocationEvent.java:313)
    at java.desktop/java.awt.EventQueue.dispatchEventImpl(EventQueue.java:776)
    at java.desktop/java.awt.EventQueue$4.run(EventQueue.java:727)
    at java.desktop/java.awt.EventQueue$4.run(EventQueue.java:721)
    at java.base/java.security.AccessController.doPrivileged(Native Method)
    at java.base/java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(ProtectionDomain.java:85)
    at java.desktop/java.awt.EventQueue.dispatchEvent(EventQueue.java:746)
    at com.intellij.ide.IdeEventQueue.defaultDispatchEvent(IdeEventQueue.java:974)
    at com.intellij.ide.IdeEventQueue._dispatchEvent(IdeEventQueue.java:847)
    at com.intellij.ide.IdeEventQueue.lambda$null$8(IdeEventQueue.java:449)
    at com.intellij.openapi.progress.impl.CoreProgressManager.computePrioritized(CoreProgressManager.java:728)
    at com.intellij.ide.IdeEventQueue.lambda$dispatchEvent$9(IdeEventQueue.java:448)
    at com.intellij.openapi.application.impl.ApplicationImpl.runIntendedWriteActionOnCurrentThread(ApplicationImpl.java:831)
    at com.intellij.ide.IdeEventQueue.dispatchEvent(IdeEventQueue.java:496)
    at com.intellij.ide.IdeEventQueue.pumpEventsForHierarchy(IdeEventQueue.java:1030)
    at com.intellij.openapi.progress.util.ProgressWindow.pumpEventsForHierarchy(ProgressWindow.java:199)
    at com.intellij.openapi.progress.util.ProgressWindow.lambda$startBlocking$3(ProgressWindow.java:189)
    at com.intellij.openapi.application.impl.ApplicationImpl.runUnlockingIntendedWrite(ApplicationImpl.java:857)
    at com.intellij.openapi.progress.util.ProgressWindow.startBlocking(ProgressWindow.java:188)
    at com.intellij.openapi.progress.impl.ProgressRunner.lambda$legacyExec$6(ProgressRunner.java:302)
    at java.base/java.util.concurrent.CompletableFuture.uniAcceptNow(CompletableFuture.java:753)
    at java.base/java.util.concurrent.CompletableFuture.uniAcceptStage(CompletableFuture.java:731)
    at java.base/java.util.concurrent.CompletableFuture.thenAccept(CompletableFuture.java:2108)
    at com.intellij.openapi.progress.impl.ProgressRunner.legacyExec(ProgressRunner.java:300)
    at com.intellij.openapi.progress.impl.ProgressRunner.submit(ProgressRunner.java:248)
    at com.intellij.openapi.progress.impl.ProgressRunner.submitAndGet(ProgressRunner.java:169)
    at com.intellij.openapi.application.impl.ApplicationImpl.runProcessWithProgressSynchronously(ApplicationImpl.java:426)
    at com.intellij.openapi.progress.impl.CoreProgressManager.runProcessWithProgressSynchronously(CoreProgressManager.java:492)
    at com.intellij.openapi.progress.impl.ProgressManagerImpl.runProcessWithProgressSynchronously(ProgressManagerImpl.java:84)
    at com.intellij.platform.ProjectUiFrameAllocator$run$1.run(ProjectFrameAllocator.kt:85)
    at com.intellij.openapi.application.impl.ApplicationImpl.invokeAndWait(ApplicationImpl.java:467)
    at com.intellij.openapi.application.impl.ApplicationImpl.invokeAndWait(ApplicationImpl.java:485)
    at com.intellij.platform.ProjectUiFrameAllocator.run(ProjectFrameAllocator.kt:68)
    at com.intellij.platform.PlatformProjectOpenProcessor$Companion.openExistingProject(PlatformProjectOpenProcessor.kt:175)
    at com.intellij.ide.RecentProjectsManagerBase.openProject(RecentProjectsManagerBase.kt:304)
    at com.intellij.ide.ReopenProjectAction.actionPerformed(ReopenProjectAction.java:62)
    at com.intellij.openapi.actionSystem.ex.ActionUtil.performActionDumbAware(ActionUtil.java:280)
    at com.intellij.openapi.actionSystem.impl.ActionMenuItem$ActionTransmitter.lambda$actionPerformed$0(ActionMenuItem.java:296)
    at com.intellij.openapi.wm.impl.FocusManagerImpl.runOnOwnContext(FocusManagerImpl.java:281)
    at com.intellij.openapi.wm.impl.IdeFocusManagerImpl.runOnOwnContext(IdeFocusManagerImpl.java:77)
    at com.intellij.openapi.actionSystem.impl.ActionMenuItem$ActionTransmitter.actionPerformed(ActionMenuItem.java:285)
    at java.desktop/javax.swing.AbstractButton.fireActionPerformed(AbstractButton.java:1967)
    at com.intellij.openapi.actionSystem.impl.ActionMenuItem.lambda$fireActionPerformed$0(ActionMenuItem.java:112)
    at com.intellij.openapi.application.TransactionGuardImpl.performUserActivity(TransactionGuardImpl.java:94)
    at com.intellij.openapi.actionSystem.impl.ActionMenuItem.fireActionPerformed(ActionMenuItem.java:112)
    at com.intellij.ui.plaf.beg.BegMenuItemUI.doClick(BegMenuItemUI.java:517)
    at com.intellij.ui.plaf.beg.BegMenuItemUI.access$300(BegMenuItemUI.java:36)
    at com.intellij.ui.plaf.beg.BegMenuItemUI$MyMenuDragMouseHandler.menuDragMouseReleased(BegMenuItemUI.java:571)
    at java.desktop/javax.swing.JMenuItem.fireMenuDragMouseReleased(JMenuItem.java:575)
    at java.desktop/javax.swing.JMenuItem.processMenuDragMouseEvent(JMenuItem.java:472)
    at java.desktop/javax.swing.JMenuItem.processMouseEvent(JMenuItem.java:417)
    at java.desktop/javax.swing.MenuSelectionManager.processMouseEvent(MenuSelectionManager.java:342)
    at java.desktop/javax.swing.plaf.basic.BasicPopupMenuUI$MouseGrabber.eventDispatched(BasicPopupMenuUI.java:903)
    at java.desktop/java.awt.Toolkit$SelectiveAWTEventListener.eventDispatched(Toolkit.java:2199)
    at java.desktop/java.awt.Toolkit$ToolkitEventMulticaster.eventDispatched(Toolkit.java:2091)
    at java.desktop/java.awt.Toolkit$ToolkitEventMulticaster.eventDispatched(Toolkit.java:2090)
    at java.desktop/java.awt.Toolkit$ToolkitEventMulticaster.eventDispatched(Toolkit.java:2090)
    at java.desktop/java.awt.Toolkit$ToolkitEventMulticaster.eventDispatched(Toolkit.java:2090)
    at java.desktop/java.awt.Toolkit.notifyAWTEventListeners(Toolkit.java:2047)
    at java.desktop/java.awt.Component.dispatchEventImpl(Component.java:4932)
    at java.desktop/java.awt.Container.dispatchEventImpl(Container.java:2321)
    at java.desktop/java.awt.Component.dispatchEvent(Component.java:4858)
    at java.desktop/java.awt.LightweightDispatcher.retargetMouseEvent(Container.java:4918)
    at java.desktop/java.awt.LightweightDispatcher.processMouseEvent(Container.java:4547)
    at java.desktop/java.awt.LightweightDispatcher.dispatchEvent(Container.java:4488)
    at java.desktop/java.awt.Container.dispatchEventImpl(Container.java:2307)
    at java.desktop/java.awt.Window.dispatchEventImpl(Window.java:2773)
    at java.desktop/java.awt.Component.dispatchEvent(Component.java:4858)
    at java.desktop/java.awt.EventQueue.dispatchEventImpl(EventQueue.java:778)
    at java.desktop/java.awt.EventQueue$4.run(EventQueue.java:727)
    at java.desktop/java.awt.EventQueue$4.run(EventQueue.java:721)
    at java.base/java.security.AccessController.doPrivileged(Native Method)
    at java.base/java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(ProtectionDomain.java:85)
    at java.base/java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(ProtectionDomain.java:95)
    at java.desktop/java.awt.EventQueue$5.run(EventQueue.java:751)
    at java.desktop/java.awt.EventQueue$5.run(EventQueue.java:749)
    at java.base/java.security.AccessController.doPrivileged(Native Method)
    at java.base/java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(ProtectionDomain.java:85)
    at java.desktop/java.awt.EventQueue.dispatchEvent(EventQueue.java:748)
    at com.intellij.ide.IdeEventQueue.defaultDispatchEvent(IdeEventQueue.java:974)
    at com.intellij.ide.IdeEventQueue.dispatchMouseEvent(IdeEventQueue.java:912)
    at com.intellij.ide.IdeEventQueue._dispatchEvent(IdeEventQueue.java:844)
    at com.intellij.ide.IdeEventQueue.lambda$null$8(IdeEventQueue.java:449)
    at com.intellij.openapi.progress.impl.CoreProgressManager.computePrioritized(CoreProgressManager.java:739)
    at com.intellij.ide.IdeEventQueue.lambda$dispatchEvent$9(IdeEventQueue.java:448)
    at com.intellij.openapi.application.impl.ApplicationImpl.runIntendedWriteActionOnCurrentThread(ApplicationImpl.java:831)
    at com.intellij.ide.IdeEventQueue.dispatchEvent(IdeEventQueue.java:502)
    at java.desktop/java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:203)
    at java.desktop/java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:124)
    at java.desktop/java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:113)
    at java.desktop/java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:109)
    at java.desktop/java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:101)
    at java.desktop/java.awt.EventDispatchThread.run(EventDispatchThread.java:90)

Investigating

Tamrael commented 4 years ago

Just debugged my IDE to the point of figuring out that I had this bug.

@OpherV maybe this line should be per project? just a wild guess, I have no clue how the status bar widget api behaves but if the class gets cached per user rather then per project this could lead to "reusing" of the same widget between project, right?

Edit: I guess the file/line would help as a link, duh. I meant to point to this

keenorchen commented 4 years ago

I also have this problem,3Q

tumb1er commented 4 years ago

Looks like StatusBarWidget should not be cached...

ScottS-byte commented 4 years ago

Related and opened today: https://youtrack.jetbrains.com/issue/IDEA-240628

fortu42 commented 4 years ago

Is there a planned date for the release of this fix version? This problem is annoying, I had to disable the plugin, but I'm really missing it :) Thank you

OpherV commented 4 years ago

Fix in 0.7.3 now out