This Bugzilla instance is deprecated, and most Eclipse projects now use GitHub or Eclipse GitLab. Please see the deprecation plan for details.
Bug 423588 - [QuickAccess] Quick Access failure, dropdown is empty
Summary: [QuickAccess] Quick Access failure, dropdown is empty
Status: VERIFIED FIXED
Alias: None
Product: Platform
Classification: Eclipse Project
Component: UI (show other bugs)
Version: 4.4   Edit
Hardware: All All
: P3 major (vote)
Target Milestone: 4.4 M5   Edit
Assignee: Eric Moffatt CLA
QA Contact: Daniel Rolka CLA
URL:
Whiteboard:
Keywords:
Depends on:
Blocks:
 
Reported: 2013-12-09 08:48 EST by Paul Webster CLA
Modified: 2014-01-21 04:52 EST (History)
5 users (show)

See Also:


Attachments
workbench.xmi from failing workspace (365.81 KB, text/plain)
2013-12-09 16:08 EST, Paul Webster CLA
no flags Details

Note You need to log in before you can comment on or make changes to this bug.
Description Paul Webster CLA 2013-12-09 08:48:44 EST
I was working in an inner from master.

When I restarted that workspace (with editors open) and I hit CTRL+3 I get an empty dropdown and a lot of exceptions:

!ENTRY org.eclipse.ui 4 0 2013-12-09 08:45:49.975
!MESSAGE Unhandled event loop exception
!STACK 0
java.lang.NullPointerException
	at org.eclipse.jface.resource.ImageDataImageDescriptor.<init>(ImageDataImageDescriptor.java:36)
	at org.eclipse.jface.resource.ImageDescriptor.createFromImage(ImageDescriptor.java:104)
	at org.eclipse.ui.internal.quickaccess.EditorElement.getImageDescriptor(EditorElement.java:53)
	at org.eclipse.ui.internal.quickaccess.QuickAccessEntry.getImage(QuickAccessEntry.java:114)
	at org.eclipse.ui.internal.quickaccess.QuickAccessEntry.measure(QuickAccessEntry.java:160)
	at org.eclipse.ui.internal.quickaccess.QuickAccessContents$9.handleEvent(QuickAccessContents.java:661)
	at org.eclipse.swt.widgets.EventTable.sendEvent(EventTable.java:84)
	at org.eclipse.swt.widgets.Display.sendEvent(Display.java:4410)
	at org.eclipse.swt.widgets.Widget.sendEvent(Widget.java:1388)
	at org.eclipse.swt.widgets.Widget.sendEvent(Widget.java:1412)
	at org.eclipse.swt.widgets.Widget.sendEvent(Widget.java:1397)
	at org.eclipse.swt.widgets.Table.sendMeasureEvent(Table.java:2488)
	at org.eclipse.swt.widgets.Table.rendererGetSizeProc(Table.java:2515)
	at org.eclipse.swt.widgets.Display.rendererGetSizeProc(Display.java:1374)
	at org.eclipse.swt.internal.gtk.OS._gtk_main_do_event(Native Method)
	at org.eclipse.swt.internal.gtk.OS.gtk_main_do_event(OS.java:8730)
	at org.eclipse.swt.widgets.Display.eventProc(Display.java:1244)
	at org.eclipse.swt.internal.gtk.OS._gtk_tree_view_set_cursor(Native Method)
	at org.eclipse.swt.internal.gtk.OS.gtk_tree_view_set_cursor(OS.java:13222)
	at org.eclipse.swt.widgets.Table.selectFocusIndex(Table.java:2917)
	at org.eclipse.swt.widgets.Table.setSelection(Table.java:3239)
	at org.eclipse.ui.internal.quickaccess.QuickAccessContents.refresh(QuickAccessContents.java:132)
	at org.eclipse.ui.internal.quickaccess.QuickAccessContents$2.modifyText(QuickAccessContents.java:522)
	at org.eclipse.swt.widgets.TypedListener.handleEvent(TypedListener.java:179)
	at org.eclipse.swt.widgets.EventTable.sendEvent(EventTable.java:84)
	at org.eclipse.swt.widgets.Display.sendEvent(Display.java:4410)
	at org.eclipse.swt.widgets.Widget.sendEvent(Widget.java:1388)
	at org.eclipse.swt.widgets.Display.runDeferredEvents(Display.java:3760)
	at org.eclipse.swt.widgets.Display.readAndDispatch(Display.java:3381)
	at org.eclipse.e4.ui.internal.workbench.swt.PartRenderingEngine$9.run(PartRenderingEngine.java:1119)
	at org.eclipse.core.databinding.observable.Realm.runWithDefault(Realm.java:332)
	at org.eclipse.e4.ui.internal.workbench.swt.PartRenderingEngine.run(PartRenderingEngine.java:1003)
	at org.eclipse.e4.ui.internal.workbench.E4Workbench.createAndRunUI(E4Workbench.java:146)
	at org.eclipse.ui.internal.Workbench$5.run(Workbench.java:609)
	at org.eclipse.core.databinding.observable.Realm.runWithDefault(Realm.java:332)
	at org.eclipse.ui.internal.Workbench.createAndRunWorkbench(Workbench.java:563)
	at org.eclipse.ui.PlatformUI.createAndRunWorkbench(PlatformUI.java:150)
	at org.eclipse.ui.internal.ide.application.IDEApplication.start(IDEApplication.java:125)
	at org.eclipse.equinox.internal.app.EclipseAppHandle.run(EclipseAppHandle.java:196)
	at org.eclipse.core.runtime.internal.adaptor.EclipseAppLauncher.runApplication(EclipseAppLauncher.java:109)
	at org.eclipse.core.runtime.internal.adaptor.EclipseAppLauncher.start(EclipseAppLauncher.java:80)
	at org.eclipse.core.runtime.adaptor.EclipseStarter.run(EclipseStarter.java:372)
	at org.eclipse.core.runtime.adaptor.EclipseStarter.run(EclipseStarter.java:226)
	at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
	at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
	at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
	at java.lang.reflect.Method.invoke(Method.java:606)
	at org.eclipse.equinox.launcher.Main.invokeFramework(Main.java:636)
	at org.eclipse.equinox.launcher.Main.basicRun(Main.java:591)
	at org.eclipse.equinox.launcher.Main.run(Main.java:1450)
	at org.eclipse.equinox.launcher.Main.main(Main.java:1426)

!ENTRY org.eclipse.ui 4 0 2013-12-09 08:45:49.986
!MESSAGE Unhandled event loop exception
!STACK 0
java.lang.NullPointerException
	at org.eclipse.jface.resource.ImageDataImageDescriptor.<init>(ImageDataImageDescriptor.java:36)
	at org.eclipse.jface.resource.ImageDescriptor.createFromImage(ImageDescriptor.java:104)
	at org.eclipse.ui.internal.quickaccess.EditorElement.getImageDescriptor(EditorElement.java:53)
	at org.eclipse.ui.internal.quickaccess.QuickAccessEntry.getImage(QuickAccessEntry.java:114)
	at org.eclipse.ui.internal.quickaccess.QuickAccessEntry.measure(QuickAccessEntry.java:160)
	at org.eclipse.ui.internal.quickaccess.QuickAccessContents$9.handleEvent(QuickAccessContents.java:661)
	at org.eclipse.swt.widgets.EventTable.sendEvent(EventTable.java:84)
	at org.eclipse.swt.widgets.Display.sendEvent(Display.java:4410)
	at org.eclipse.swt.widgets.Widget.sendEvent(Widget.java:1388)
	at org.eclipse.swt.widgets.Widget.sendEvent(Widget.java:1412)
	at org.eclipse.swt.widgets.Widget.sendEvent(Widget.java:1397)
	at org.eclipse.swt.widgets.Table.sendMeasureEvent(Table.java:2488)
	at org.eclipse.swt.widgets.Table.rendererGetSizeProc(Table.java:2515)
	at org.eclipse.swt.widgets.Display.rendererGetSizeProc(Display.java:1374)
	at org.eclipse.swt.internal.gtk.OS._gtk_cell_renderer_get_size(Native Method)
	at org.eclipse.swt.internal.gtk.OS.gtk_cell_renderer_get_size(OS.java:6276)
	at org.eclipse.swt.widgets.Widget.gtk_cell_renderer_get_preferred_size(Widget.java:2164)
	at org.eclipse.swt.widgets.Table.rendererRender(Table.java:2593)
	at org.eclipse.swt.widgets.Table.rendererRenderProc(Table.java:2526)
	at org.eclipse.swt.widgets.Display.rendererRenderProc(Display.java:1388)
	at org.eclipse.swt.internal.gtk.OS._gtk_main_do_event(Native Method)
	at org.eclipse.swt.internal.gtk.OS.gtk_main_do_event(OS.java:8730)
	at org.eclipse.swt.widgets.Display.eventProc(Display.java:1244)
	at org.eclipse.swt.internal.gtk.OS._g_main_context_iteration(Native Method)
	at org.eclipse.swt.internal.gtk.OS.g_main_context_iteration(OS.java:2284)
	at org.eclipse.swt.widgets.Display.readAndDispatch(Display.java:3379)
	at org.eclipse.e4.ui.internal.workbench.swt.PartRenderingEngine$9.run(PartRenderingEngine.java:1119)
	at org.eclipse.core.databinding.observable.Realm.runWithDefault(Realm.java:332)
	at org.eclipse.e4.ui.internal.workbench.swt.PartRenderingEngine.run(PartRenderingEngine.java:1003)
	at org.eclipse.e4.ui.internal.workbench.E4Workbench.createAndRunUI(E4Workbench.java:146)
	at org.eclipse.ui.internal.Workbench$5.run(Workbench.java:609)
	at org.eclipse.core.databinding.observable.Realm.runWithDefault(Realm.java:332)
	at org.eclipse.ui.internal.Workbench.createAndRunWorkbench(Workbench.java:563)
	at org.eclipse.ui.PlatformUI.createAndRunWorkbench(PlatformUI.java:150)
	at org.eclipse.ui.internal.ide.application.IDEApplication.start(IDEApplication.java:125)
	at org.eclipse.equinox.internal.app.EclipseAppHandle.run(EclipseAppHandle.java:196)
	at org.eclipse.core.runtime.internal.adaptor.EclipseAppLauncher.runApplication(EclipseAppLauncher.java:109)
	at org.eclipse.core.runtime.internal.adaptor.EclipseAppLauncher.start(EclipseAppLauncher.java:80)
	at org.eclipse.core.runtime.adaptor.EclipseStarter.run(EclipseStarter.java:372)
	at org.eclipse.core.runtime.adaptor.EclipseStarter.run(EclipseStarter.java:226)
	at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
	at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
	at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
	at java.lang.reflect.Method.invoke(Method.java:606)
	at org.eclipse.equinox.launcher.Main.invokeFramework(Main.java:636)
	at org.eclipse.equinox.launcher.Main.basicRun(Main.java:591)
	at org.eclipse.equinox.launcher.Main.run(Main.java:1450)
	at org.eclipse.equinox.launcher.Main.main(Main.java:1426)
Comment 1 Paul Webster CLA 2013-12-09 08:49:27 EST
Possibly related to the editor ref icon changes that were recently made?

PW
Comment 2 Paul Webster CLA 2013-12-09 16:08:44 EST
Created attachment 238177 [details]
workbench.xmi from failing workspace
Comment 3 Noopur Gupta CLA 2014-01-02 07:29:10 EST
Steps to reproduce:

1. Open a new workspace and create a Java project with 2 files, TestNode1.java and TestNode2.java.
2. Open TestNode2.java with Java editor.
3. Press Ctrl+3 for quick access and type "de".
4. Select TestNode2.java from the list (in Editors) and press Enter.
5. Delete TestNode2.java from Package explorer.
6. Press Ctrl+3 and type "de" => We get the partially empty dropdown and exceptions in Error Log view.
Comment 4 Markus Keller CLA 2014-01-08 07:02:27 EST
Doesn't happen in 4.3.1.

Got broken by the initial commit for bug 387579: org.eclipse.ui.internal.WorkbenchPartReference#getTitleImage() must not return null, even if the editor has not been created yet.
Comment 5 Eric Moffatt CLA 2014-01-15 15:11:48 EST
Committed:

http://git.eclipse.org/c/platform/eclipse.platform.ui.git/commit/?id=6750d2546700063bebc6a9567132e7c3f2671e3c

This uses the renderer from the currently active window in order to get the image. In light of Markus' comment about 'null' being bad I've also changed the 'return null' at the end of the method to return the DEFAULT_VIEW image instead...
Comment 6 Lars Vogel CLA 2014-01-21 04:52:32 EST
Verified in I20140120-2000