Environment
- OS: RHEL 9.6
- Eclipse Version: 4.41
- Plugin Version: 0.19.0.202606300450_nightly
Describe the bug
Start a longer Chat conversation with agent, which is a bit longer as just one question, e.g. refactoring with different stages. Add ~5 files to the context. Once the conversation reaches some amount of displayed code (in my case ~15 questions/prompts & 15 answers/actions), the Chat view starts affecting performance of editor switching, even if it is not visible anymore (Outline is shown instead it in same stack). On each editor switch like in a debug session where different files are opened for the next breakpoint, UI freezes for a second or two.
Typical stack trace shows that Chat view, even if not visible, tries to re-layout itself on every editor switch, freezing UI for that time. Debugging becomes hardly possible, because on every breakpoint hit the UI waits few seconds before debug line is highlighted in the new editor.
Expected behavior
- No UI freezes on editor switches, independently how long conversation is in an opened Chat view.
- If Chat view is not visible (not on the top of the view stack), it should not re-layout itself, just set a flag that if it becomes visible, it should perform a re-layout.
Stack
eclipse.buildId=4.41.0.I20260701-2300
java.version=25
java.vendor=Eclipse Adoptium
BootLoader constants: OS=linux, ARCH=x86_64, WS=gtk, NL=en_US
Command-line arguments: -os linux -ws gtk -arch x86_64 -data /data/4x_platform_workspace
org.eclipse.ui.monitoring
Info
Thu Jul 02 11:44:22 CEST 2026
Sample at 11:44:22.289 (+0.665s)
Thread 'main' tid=3 (RUNNABLE)
Stack Trace
at org.eclipse.swt.internal.gtk.OS.pango_layout_get_size(Native Method)
at org.eclipse.swt.graphics.TextLayout$MetricsAdapter.pango_layout_get_size(TextLayout.java:181)
at org.eclipse.swt.graphics.TextLayout.getBounds(TextLayout.java:911)
at org.eclipse.swt.custom.StyledText.computeSize(StyledText.java:1256)
at org.eclipse.swt.layout.GridData.computeSize(GridData.java:504)
at org.eclipse.swt.layout.GridLayout.layout(GridLayout.java:486)
at org.eclipse.swt.layout.GridLayout.computeSize(GridLayout.java:168)
at org.eclipse.swt.widgets.Composite.computeSizeInPixels(Composite.java:269)
at org.eclipse.swt.widgets.Control.computeSize(Control.java:862)
at org.eclipse.swt.layout.GridData.computeSize(GridData.java:504)
at org.eclipse.swt.layout.GridLayout.layout(GridLayout.java:486)
at org.eclipse.swt.layout.GridLayout.layout(GridLayout.java:201)
at org.eclipse.swt.widgets.Composite.updateLayout(Composite.java:1918)
at org.eclipse.swt.widgets.Composite.updateLayout(Composite.java:1923)
at org.eclipse.swt.widgets.Composite.updateLayout(Composite.java:1923)
at org.eclipse.swt.widgets.Composite.updateLayout(Composite.java:1923)
at org.eclipse.swt.widgets.Composite.updateLayout(Composite.java:1923)
at org.eclipse.swt.widgets.Composite.updateLayout(Composite.java:1923)
at org.eclipse.swt.widgets.Composite.updateLayout(Composite.java:1923)
at org.eclipse.swt.widgets.Composite.layout(Composite.java:1221)
at com.microsoft.copilot.eclipse.ui.chat.ChatView.layout(ChatView.java:1714)
at com.microsoft.copilot.eclipse.ui.chat.ReferencedFile.setFile(ReferencedFile.java:173)
at com.microsoft.copilot.eclipse.ui.chat.CurrentReferencedFile.setFile(CurrentReferencedFile.java:92)
at com.microsoft.copilot.eclipse.ui.chat.services.ReferencedFileService.lambda$6(ReferencedFileService.java:220)
at com.microsoft.copilot.eclipse.ui.chat.services.ReferencedFileService$$Lambda/0x00000000102b8460.accept(Unknown Source)
at org.eclipse.core.internal.databinding.observable.sideeffect.SideEffect.lambda$1(SideEffect.java:330)
at org.eclipse.core.internal.databinding.observable.sideeffect.SideEffect$$Lambda/0x000000000fb28990.run(Unknown Source)
at org.eclipse.core.databinding.observable.ObservableTracker.runAndMonitor(ObservableTracker.java:113)
at org.eclipse.core.internal.databinding.observable.sideeffect.SideEffect.update(SideEffect.java:199)
at org.eclipse.core.internal.databinding.observable.sideeffect.SideEffect$PrivateInterface.run(SideEffect.java:349)
at org.eclipse.core.databinding.observable.Realm$1.run(Realm.java:155)
at org.eclipse.core.runtime.SafeRunner.run(SafeRunner.java:47)
at org.eclipse.core.databinding.observable.Realm.safeRun(Realm.java:159)
at org.eclipse.jface.databinding.swt.DisplayRealm.lambda$0(DisplayRealm.java:64)
at org.eclipse.jface.databinding.swt.DisplayRealm$$Lambda/0x000000000f2ba240.run(Unknown Source)
at org.eclipse.swt.widgets.RunnableLock.run(RunnableLock.java:40)
at org.eclipse.swt.widgets.Synchronizer.runAsyncMessages(Synchronizer.java:131)
at org.eclipse.swt.widgets.Display.runAsyncMessages(Display.java:5068)
at org.eclipse.swt.widgets.Display.readAndDispatch(Display.java:4528)
at org.eclipse.e4.ui.internal.workbench.swt.PartRenderingEngine$5.run(PartRenderingEngine.java:1160)
at org.eclipse.core.databinding.observable.Realm.runWithDefault(Realm.java:339)
at org.eclipse.e4.ui.internal.workbench.swt.PartRenderingEngine.run(PartRenderingEngine.java:1051)
at org.eclipse.e4.ui.internal.workbench.E4Workbench.createAndRunUI(E4Workbench.java:153)
at org.eclipse.ui.internal.Workbench.lambda$3(Workbench.java:680)
at org.eclipse.ui.internal.Workbench$$Lambda/0x000000000f1eb3e0.run(Unknown Source)
at org.eclipse.core.databinding.observable.Realm.runWithDefault(Realm.java:339)
at org.eclipse.ui.internal.Workbench.createAndRunWorkbench(Workbench.java:583)
at org.eclipse.ui.PlatformUI.createAndRunWorkbench(PlatformUI.java:173)
at org.eclipse.ui.internal.ide.application.IDEApplication.start(IDEApplication.java:193)
at org.eclipse.equinox.internal.app.EclipseAppHandle.run(EclipseAppHandle.java:219)
at org.eclipse.core.runtime.internal.adaptor.EclipseAppLauncher.runApplication(EclipseAppLauncher.java:149)
at org.eclipse.core.runtime.internal.adaptor.EclipseAppLauncher.start(EclipseAppLauncher.java:115)
at org.eclipse.core.runtime.adaptor.EclipseStarter.run(EclipseStarter.java:467)
at org.eclipse.core.runtime.adaptor.EclipseStarter.run(EclipseStarter.java:298)
at java.base@25/java.lang.invoke.DirectMethodHandle$Holder.invokeStatic(DirectMethodHandle$Holder)
at java.base@25/java.lang.invoke.LambdaForm$MH/0x000000000f052000.invoke(LambdaForm$MH)
at java.base@25/java.lang.invoke.LambdaForm$MH/0x000000000f052400.invokeExact_MT(LambdaForm$MH)
at java.base@25/jdk.internal.reflect.DirectMethodHandleAccessor.invokeImpl(DirectMethodHandleAccessor.java:156)
at java.base@25/jdk.internal.reflect.DirectMethodHandleAccessor.invoke(DirectMethodHandleAccessor.java:104)
at java.base@25/java.lang.reflect.Method.invoke(Method.java:565)
at app//org.eclipse.equinox.launcher.Main.invokeFramework(Main.java:615)
at app//org.eclipse.equinox.launcher.Main.basicRun(Main.java:563)
at app//org.eclipse.equinox.launcher.Main.run(Main.java:1415)
at app//org.eclipse.equinox.launcher.Main.main(Main.java:1387)
Environment
Describe the bug
Start a longer Chat conversation with agent, which is a bit longer as just one question, e.g. refactoring with different stages. Add ~5 files to the context. Once the conversation reaches some amount of displayed code (in my case ~15 questions/prompts & 15 answers/actions), the Chat view starts affecting performance of editor switching, even if it is not visible anymore (Outline is shown instead it in same stack). On each editor switch like in a debug session where different files are opened for the next breakpoint, UI freezes for a second or two.
Typical stack trace shows that Chat view, even if not visible, tries to re-layout itself on every editor switch, freezing UI for that time. Debugging becomes hardly possible, because on every breakpoint hit the UI waits few seconds before debug line is highlighted in the new editor.
Expected behavior
Stack