Some Eclipse Foundation services are deprecated, or will be soon. Please ensure you've read this important communication.

Bug 374690

Summary: [e4] Task List get stuck in focused mode when focus is active on startup
Product: z_Archived Reporter: Steffen Pingel <steffen.pingel>
Component: MylynAssignee: Steffen Pingel <steffen.pingel>
Status: RESOLVED FIXED QA Contact:
Severity: enhancement    
Priority: P3 CC: remy.suen
Version: unspecified   
Target Milestone: 3.8   
Hardware: PC   
OS: Linux   
Whiteboard:
Bug Depends on: 372684    
Bug Blocks: 321278, 376368    

Description Steffen Pingel CLA 2012-03-19 15:00:39 EDT
Steps:
1. Focus task list
2. Restart Eclipse
3. Unfocus

The focus icon appears unpressed but the task list is still focused.
Comment 1 Steffen Pingel CLA 2012-03-19 15:08:14 EDT
The problem appears to be that 	FocusTaskListAction.init(IViewPart) gets invoked twice.

Startup:

Thread [main] (Suspended (breakpoint at line 110 in FocusTaskListAction$2))	
	FocusTaskListAction$2.run() line: 110	
	TasksUiInternal.preservingSelection(TreeViewer, Runnable) line: 1080	
	FocusTaskListAction.installInterestFilter() line: 104	
	FocusTaskListAction.init(IViewPart) line: 82	
	ViewPluginAction.initDelegate() line: 59	
	ViewPluginAction(PluginAction).createDelegate() line: 125	
	ViewPluginAction(PluginAction).selectionChanged(ISelection) line: 275	
	ViewPluginAction(PartPluginAction).registerSelectionListener(IWorkbenchPart) line: 40	
	ViewPluginAction.<init>(IConfigurationElement, IViewPart, String, int) line: 38	
	ActionDescriptor.createAction(int, IConfigurationElement, Object, String) line: 259	
	ActionDescriptor.<init>(IConfigurationElement, int, Object) line: 176	
	MenuHelper$4.getDescriptor(IEclipseContext) line: 699	
	MenuHelper$4.compute(IEclipseContext) line: 715	
	HandledContributionItem.hookCheckListener() line: 397	
	HandledContributionItem.fill(ToolBar, int) line: 377	
	ToolBarManager.update(boolean) line: 353	
	ToolBarManagerRenderer.processContents(MElementContainer<MUIElement>) line: 504	
	ToolBarManagerRenderer$5.handleEvent(Event) line: 220	
	UIEventHandler$1.run() line: 41	
	UISynchronizer(Synchronizer).syncExec(Runnable) line: 180	
	UISynchronizer.syncExec(Runnable) line: 150	
	Display.syncExec(Runnable) line: 4290	
	E4Application$1.syncExec(Runnable) line: 184	
	UIEventHandler.handleEvent(Event) line: 38	
	EventHandlerWrapper.handleEvent(Event, Permission) line: 197	
	EventHandlerTracker.dispatchEvent(EventHandlerWrapper, Permission, int, Event) line: 197	
	EventHandlerTracker.dispatchEvent(Object, Object, int, Object) line: 1	
	EventManager.dispatchEvent(Set, EventDispatcher, int, Object) line: 230	
	ListenerQueue.dispatchEventSynchronous(int, Object) line: 148	
	EventAdminImpl.dispatchEvent(Event, boolean) line: 135	
	EventAdminImpl.sendEvent(Event) line: 78	
	EventComponent.sendEvent(Event) line: 39	
	EventBroker.send(String, Object) line: 81	
	UIEventPublisher.notifyChanged(Notification) line: 57	
	ToolBarImpl(BasicNotifierImpl).eNotify(Notification) line: 380	
	ElementContainerImpl$1(EcoreEList<E>).dispatchNotification(Notification) line: 255	
	ElementContainerImpl$1(NotifyingListImpl<E>).addUnique(int, E) line: 362	
	ElementContainerImpl$1(AbstractEList<E>).add(int, E) line: 345	
	ToolBarContributionRecord.mergeIntoModel() line: 169	
	ToolBarManagerRenderer.processAddition(MToolBar, ToolBarManager, MToolBarContribution) line: 368	
	ToolBarManagerRenderer.generateContributions(MToolBar, ArrayList<MToolBarContribution>) line: 346	
	ToolBarManagerRenderer.processContribution(MToolBar) line: 327	
	ToolBarManagerRenderer.createWidget(MUIElement, Object) line: 265	
	PartRenderingEngine.createWidget(MUIElement, Object) line: 882	
	PartRenderingEngine.safeCreateGui(MUIElement, Object, IEclipseContext) line: 616	
	PartRenderingEngine$6.run() line: 505	
	SafeRunner.run(ISafeRunnable) line: 42	
	PartRenderingEngine.createGui(MUIElement, Object, IEclipseContext) line: 490	
	StackRenderer.adjustTR(CTabFolder, MPart) line: 620	
	StackRenderer.showTab(MUIElement) line: 1021	
	StackRenderer(LazyStackRenderer).postProcess(MUIElement) line: 97	
	PartRenderingEngine.safeCreateGui(MUIElement, Object, IEclipseContext) line: 632	
	PartRenderingEngine.safeCreateGui(MUIElement) line: 718	
	PartRenderingEngine.access$2(PartRenderingEngine, MUIElement) line: 689	
	PartRenderingEngine$7.run() line: 683	
	SafeRunner.run(ISafeRunnable) line: 42	
	PartRenderingEngine.createGui(MUIElement) line: 668	
	SashRenderer(SWTPartRenderer).processContents(MElementContainer<MUIElement>) line: 59	
	PartRenderingEngine.safeCreateGui(MUIElement, Object, IEclipseContext) line: 628	
	PartRenderingEngine.safeCreateGui(MUIElement) line: 718	
	PartRenderingEngine.access$2(PartRenderingEngine, MUIElement) line: 689	
	PartRenderingEngine$7.run() line: 683	
	SafeRunner.run(ISafeRunnable) line: 42	
	PartRenderingEngine.createGui(MUIElement) line: 668	
	SashRenderer(SWTPartRenderer).processContents(MElementContainer<MUIElement>) line: 59	
	PartRenderingEngine.safeCreateGui(MUIElement, Object, IEclipseContext) line: 628	
	PartRenderingEngine.safeCreateGui(MUIElement) line: 718	
	PartRenderingEngine.access$2(PartRenderingEngine, MUIElement) line: 689	
	PartRenderingEngine$7.run() line: 683	
	SafeRunner.run(ISafeRunnable) line: 42	
	PartRenderingEngine.createGui(MUIElement) line: 668	
	SashRenderer(SWTPartRenderer).processContents(MElementContainer<MUIElement>) line: 59	
	PartRenderingEngine.safeCreateGui(MUIElement, Object, IEclipseContext) line: 628	
	PartRenderingEngine.safeCreateGui(MUIElement) line: 718	
	PartRenderingEngine.access$2(PartRenderingEngine, MUIElement) line: 689	
	PartRenderingEngine$7.run() line: 683	
	SafeRunner.run(ISafeRunnable) line: 42	
	PartRenderingEngine.createGui(MUIElement) line: 668	
	SashRenderer(SWTPartRenderer).processContents(MElementContainer<MUIElement>) line: 59	
	PartRenderingEngine.safeCreateGui(MUIElement, Object, IEclipseContext) line: 628	
	PartRenderingEngine.safeCreateGui(MUIElement) line: 718	
	PartRenderingEngine.access$2(PartRenderingEngine, MUIElement) line: 689	
	PartRenderingEngine$7.run() line: 683	
	SafeRunner.run(ISafeRunnable) line: 42	
	PartRenderingEngine.createGui(MUIElement) line: 668	
	PerspectiveRenderer(SWTPartRenderer).processContents(MElementContainer<MUIElement>) line: 59	
	PerspectiveRenderer.processContents(MElementContainer<MUIElement>) line: 59	
	PartRenderingEngine.safeCreateGui(MUIElement, Object, IEclipseContext) line: 628	
	PartRenderingEngine.safeCreateGui(MUIElement) line: 718	
	PartRenderingEngine.access$2(PartRenderingEngine, MUIElement) line: 689	
	PartRenderingEngine$7.run() line: 683	
	SafeRunner.run(ISafeRunnable) line: 42	
	PartRenderingEngine.createGui(MUIElement) line: 668	
	PerspectiveStackRenderer.showTab(MUIElement) line: 103	
	PerspectiveStackRenderer(LazyStackRenderer).postProcess(MUIElement) line: 97	
	PerspectiveStackRenderer.postProcess(MUIElement) line: 77	
	PartRenderingEngine.safeCreateGui(MUIElement, Object, IEclipseContext) line: 632	
	PartRenderingEngine.safeCreateGui(MUIElement) line: 718	
	PartRenderingEngine.access$2(PartRenderingEngine, MUIElement) line: 689	
	PartRenderingEngine$7.run() line: 683	
	SafeRunner.run(ISafeRunnable) line: 42	
	PartRenderingEngine.createGui(MUIElement) line: 668	
	SashRenderer(SWTPartRenderer).processContents(MElementContainer<MUIElement>) line: 59	
	PartRenderingEngine.safeCreateGui(MUIElement, Object, IEclipseContext) line: 628	
	PartRenderingEngine.safeCreateGui(MUIElement) line: 718	
	PartRenderingEngine.access$2(PartRenderingEngine, MUIElement) line: 689	
	PartRenderingEngine$7.run() line: 683	
	SafeRunner.run(ISafeRunnable) line: 42	
	PartRenderingEngine.createGui(MUIElement) line: 668	
	WBWRenderer(SWTPartRenderer).processContents(MElementContainer<MUIElement>) line: 59	
	WBWRenderer.processContents(MElementContainer<MUIElement>) line: 626	
	PartRenderingEngine.safeCreateGui(MUIElement, Object, IEclipseContext) line: 628	
	PartRenderingEngine.safeCreateGui(MUIElement) line: 718	
	PartRenderingEngine.access$2(PartRenderingEngine, MUIElement) line: 689	
	PartRenderingEngine$7.run() line: 683	
	SafeRunner.run(ISafeRunnable) line: 42	
	PartRenderingEngine.createGui(MUIElement) line: 668	
	PartRenderingEngine$9.run() line: 954	
	Realm.runWithDefault(Realm, Runnable) line: 332	
	PartRenderingEngine.run(MApplicationElement, IEclipseContext) line: 909	
	E4Workbench.createAndRunUI(MApplicationElement) line: 85	
	Workbench$4.run() line: 580	
	Realm.runWithDefault(Realm, Runnable) line: 332	
	Workbench.createAndRunWorkbench(Display, WorkbenchAdvisor) line: 535	
	PlatformUI.createAndRunWorkbench(Display, WorkbenchAdvisor) line: 149	
	IDEApplication.start(IApplicationContext) line: 124	
	EclipseAppHandle.run(Object) line: 196	
	EclipseAppLauncher.runApplication(Object) line: 110	
	EclipseAppLauncher.start(Object) line: 79	
	EclipseStarter.run(Object) line: 353	
	EclipseStarter.run(String[], Runnable) line: 180	
	NativeMethodAccessorImpl.invoke0(Method, Object, Object[]) line: not available [native method]	
	NativeMethodAccessorImpl.invoke(Object, Object[]) line: 39	
	DelegatingMethodAccessorImpl.invoke(Object, Object[]) line: 25	
	Method.invoke(Object, Object...) line: 597	
	Main.invokeFramework(String[], URL[]) line: 629	
	Main.basicRun(String[]) line: 584	
	Main.run(String[]) line: 1438	
	Main.main(String[]) line: 1414	


First view activation:

Thread [main] (Suspended)	
	TaskListView.setFocusedMode(boolean) line: 1586	
	FocusTaskListAction$2.run() line: 108	
	TasksUiInternal.preservingSelection(TreeViewer, Runnable) line: 1080	
	FocusTaskListAction.installInterestFilter() line: 104	
	FocusTaskListAction.init(IViewPart) line: 82	
	ActionDelegateHandlerProxy$2.run() line: 479	
	SafeRunner.run(ISafeRunnable) line: 42	
	ActionDelegateHandlerProxy.initDelegate() line: 485	
	ActionDelegateHandlerProxy.loadDelegate() line: 603	
	ActionDelegateHandlerProxy.updateDelegate(IAction, IEvaluationContext) line: 312	
	ActionDelegateHandlerProxy.setEnabled(Object) line: 522	
	E4HandlerProxy.canExecute(IEclipseContext, IEvaluationContext) line: 55	
	GeneratedMethodAccessor5.invoke(Object, Object[]) line: not available	
	DelegatingMethodAccessorImpl.invoke(Object, Object[]) line: 25	
	Method.invoke(Object, Object...) line: 597	
	MethodRequestor.execute() line: 56	
	InjectorImpl.invokeUsingClass(Object, Class<?>, Class<Annotation>, Object, PrimaryObjectSupplier, PrimaryObjectSupplier, boolean) line: 229	
	InjectorImpl.invoke(Object, Class<Annotation>, Object, PrimaryObjectSupplier, PrimaryObjectSupplier) line: 210	
	ContextInjectionFactory.invoke(Object, Class<Annotation>, IEclipseContext, IEclipseContext, Object) line: 131	
	HandlerServiceImpl.canExecute(ParameterizedCommand, IEclipseContext) line: 108	
	HandledContributionItem.canExecuteItem(Event) line: 807	
	HandledContributionItem.access$1(HandledContributionItem, Event) line: 796	
	HandledContributionItem$3.run() line: 196	
	SafeRunner.run(ISafeRunnable) line: 42	
	HandledContributionItem.updateItemEnablement() line: 223	
	HandledContributionItem$ToolItemUpdateTimer.run() line: 129	
	Display.timerProc(long) line: 4120	
	OS._g_main_context_iteration(long, boolean) line: not available [native method]	
	OS.g_main_context_iteration(long, boolean) line: 2326	
	Display.readAndDispatch() line: 3176	
	PartRenderingEngine$9.run() line: 1015	
	Realm.runWithDefault(Realm, Runnable) line: 332	
	PartRenderingEngine.run(MApplicationElement, IEclipseContext) line: 909	
	E4Workbench.createAndRunUI(MApplicationElement) line: 85	
	Workbench$4.run() line: 580	
	Realm.runWithDefault(Realm, Runnable) line: 332	
	Workbench.createAndRunWorkbench(Display, WorkbenchAdvisor) line: 535	
	PlatformUI.createAndRunWorkbench(Display, WorkbenchAdvisor) line: 149	
	IDEApplication.start(IApplicationContext) line: 124	
	EclipseAppHandle.run(Object) line: 196	
	EclipseAppLauncher.runApplication(Object) line: 110	
	EclipseAppLauncher.start(Object) line: 79	
	EclipseStarter.run(Object) line: 353	
	EclipseStarter.run(String[], Runnable) line: 180	
	NativeMethodAccessorImpl.invoke0(Method, Object, Object[]) line: not available [native method]	
	NativeMethodAccessorImpl.invoke(Object, Object[]) line: 39	
	DelegatingMethodAccessorImpl.invoke(Object, Object[]) line: 25	
	Method.invoke(Object, Object...) line: 597	
	Main.invokeFramework(String[], URL[]) line: 629	
	Main.basicRun(String[]) line: 584	
	Main.run(String[]) line: 1438	
	Main.main(String[]) line: 1414
Comment 2 Steffen Pingel CLA 2012-03-19 15:12:28 EDT
In comparison, on 3.8 it looks like this.

Startup:

Thread [main] (Suspended (breakpoint at line 110 in FocusTaskListAction$2))	
	owns: RunnableLock  (id=83)	
	FocusTaskListAction$2.run() line: 110	
	TasksUiInternal.preservingSelection(TreeViewer, Runnable) line: 1080	
	FocusTaskListAction.installInterestFilter() line: 104	
	FocusTaskListAction.init(IViewPart) line: 82	
	ViewPluginAction.initDelegate() line: 59	
	ViewPluginAction(PluginAction).createDelegate() line: 125	
	ViewPluginAction(PluginAction).selectionChanged(ISelection) line: 275	
	ViewPluginAction(PartPluginAction).registerSelectionListener(IWorkbenchPart) line: 40	
	ViewPluginAction.<init>(IConfigurationElement, IViewPart, String, int) line: 38	
	ActionDescriptor.createAction(int, IConfigurationElement, Object, String) line: 259	
	ActionDescriptor.<init>(IConfigurationElement, int, Object) line: 176	
	ViewActionBuilder.createActionDescriptor(IConfigurationElement) line: 47	
	ViewActionBuilder(PluginActionBuilder).readElement(IConfigurationElement) line: 161	
	ViewActionBuilder(RegistryReader).readElements(IConfigurationElement[]) line: 144	
	ViewActionBuilder(RegistryReader).readElementChildren(IConfigurationElement) line: 133	
	ViewActionBuilder(PluginActionBuilder).readElement(IConfigurationElement) line: 144	
	ViewActionBuilder(RegistryReader).readElements(IConfigurationElement[]) line: 144	
	ViewActionBuilder(RegistryReader).readExtension(IExtension) line: 155	
	ViewActionBuilder(RegistryReader).readRegistry(IExtensionRegistry, String, String) line: 176	
	ViewActionBuilder(PluginActionBuilder).readContributions(String, String, String) line: 115	
	ViewActionBuilder.readActionExtensions(IViewPart) line: 76	
	ViewReference.createPartHelper() line: 401	
	ViewReference.createPart() line: 229	
	ViewReference(WorkbenchPartReference).getPart(boolean) line: 595	
	ViewPane(PartPane).setVisible(boolean) line: 313	
	ViewPane.setVisible(boolean) line: 534	
	PresentablePart.setVisible(boolean) line: 180	
	PresentablePartFolder.select(IPresentablePart) line: 270	
	LeftToRightTabOrder.select(IPresentablePart) line: 65	
	TabbedStackPresentation.selectPart(IPresentablePart) line: 473	
	ViewStack(PartStack).refreshPresentationSelection() line: 1245	
	ViewStack(PartStack).createControl(Composite, StackPresentation) line: 662	
	ViewStack(PartStack).createControl(Composite) line: 570	
	ViewSashContainer(PartSashContainer).createControl(Composite) line: 568	
	PerspectiveHelper.activate(Composite) line: 272	
	Perspective.onActivate() line: 981	
	WorkbenchPage.onActivate() line: 2714	
	WorkbenchWindow$27.run() line: 3023	
	BusyIndicator.showWhile(Display, Runnable) line: 70	
	WorkbenchWindow.setActivePage(IWorkbenchPage) line: 3004	
	WorkbenchWindow$20.runWithException() line: 2290	
	WorkbenchWindow$20(StartupThreading$StartupRunnable).run() line: 31	
	RunnableLock.run() line: 35	
	UISynchronizer(Synchronizer).runAsyncMessages(boolean) line: 135	
	Display.runAsyncMessages(boolean) line: 3563	
	Display.readAndDispatch() line: 3212	
	IDEWorkbenchAdvisor(WorkbenchAdvisor).openWindows() line: 803	
	Workbench$33.runWithException() line: 1595	
	Workbench$33(StartupThreading$StartupRunnable).run() line: 31	
	UISynchronizer(Synchronizer).syncExec(Runnable) line: 180	
	UISynchronizer.syncExec(Runnable) line: 150	
	Display.syncExec(Runnable) line: 4330	
	StartupThreading.runWithoutExceptions(StartupThreading$StartupRunnable) line: 94	
	Workbench.init() line: 1590	
	Workbench.runUI() line: 2623	
	Workbench.access$4(Workbench) line: 2494	
	Workbench$7.run() line: 674	
	Realm.runWithDefault(Realm, Runnable) line: 332	
	Workbench.createAndRunWorkbench(Display, WorkbenchAdvisor) line: 667	
	PlatformUI.createAndRunWorkbench(Display, WorkbenchAdvisor) line: 149	
	IDEApplication.start(IApplicationContext) line: 123	
	EclipseAppHandle.run(Object) line: 196	
	EclipseAppLauncher.runApplication(Object) line: 110	
	EclipseAppLauncher.start(Object) line: 79	
	EclipseStarter.run(Object) line: 344	
	EclipseStarter.run(String[], Runnable) line: 179	
	NativeMethodAccessorImpl.invoke0(Method, Object, Object[]) line: not available [native method]	
	NativeMethodAccessorImpl.invoke(Object, Object[]) line: 57	
	DelegatingMethodAccessorImpl.invoke(Object, Object[]) line: 43	
	Method.invoke(Object, Object...) line: 601	
	Main.invokeFramework(String[], URL[]) line: 622	
	Main.basicRun(String[]) line: 577	
	Main.run(String[]) line: 1410	
	Main.main(String[]) line: 1386	


init() is not called again on activation.
Comment 3 Paul Webster CLA 2012-03-19 15:15:22 EDT
I think that's the same as Bug 372684

PW
Comment 4 Steffen Pingel CLA 2012-03-19 15:21:07 EDT
Thanks a lot! That looks the same problem.

*** This bug has been marked as a duplicate of bug 372684 ***
Comment 5 Steffen Pingel CLA 2012-03-20 03:42:19 EDT
Reopening to track this in Mylyn.
Comment 6 Steffen Pingel CLA 2012-04-23 02:05:04 EDT
This has been fixed upstream in I20120411-2034.