Some Eclipse Foundation services are deprecated, or will be soon. Please ensure you've read this important communication.
Bug 331550 - BreadcrumbViewer broken when Composite default size is 0,0
Summary: BreadcrumbViewer broken when Composite default size is 0,0
Status: RESOLVED FIXED
Alias: None
Product: JDT
Classification: Eclipse Project
Component: Text (show other bugs)
Version: 3.7   Edit
Hardware: PC Windows 7
: P3 normal (vote)
Target Milestone: 3.7 M4   Edit
Assignee: Markus Keller CLA
QA Contact:
URL:
Whiteboard:
Keywords:
Depends on:
Blocks:
 
Reported: 2010-12-01 10:04 EST by Markus Keller CLA
Modified: 2010-12-01 11:28 EST (History)
2 users (show)

See Also:


Attachments
Fix (1021 bytes, patch)
2010-12-01 10:09 EST, Markus Keller CLA
no flags Details | Diff

Note You need to log in before you can comment on or make changes to this bug.
Description Markus Keller CLA 2010-12-01 10:04:07 EST
When bug 118659 gets fixed, the BreadcrumbViewer can throw an IAE since it tries to create an Image with height == 0. Before, we were just lucky that the default height was 64.

Steps:
- open A.java
- show the breadcrumb
- close editor
- delete the file
- Navigate > Back > A.java


!ENTRY org.eclipse.ui 4 0 2010-12-01 15:56:36.539
!MESSAGE Argument not valid
!STACK 0
java.lang.IllegalArgumentException: Argument not valid
	at org.eclipse.swt.SWT.error(SWT.java:4072)
	at org.eclipse.swt.SWT.error(SWT.java:4006)
	at org.eclipse.swt.SWT.error(SWT.java:3977)
	at org.eclipse.swt.graphics.Image.init(Image.java:1572)
	at org.eclipse.swt.graphics.Image.<init>(Image.java:181)
	at org.eclipse.jdt.internal.ui.javaeditor.breadcrumb.BreadcrumbViewer.createGradientImage(BreadcrumbViewer.java:745)
	at org.eclipse.jdt.internal.ui.javaeditor.breadcrumb.BreadcrumbViewer.access$2(BreadcrumbViewer.java:742)
	at org.eclipse.jdt.internal.ui.javaeditor.breadcrumb.BreadcrumbViewer$2.handleEvent(BreadcrumbViewer.java:116)
	at org.eclipse.swt.widgets.EventTable.sendEvent(EventTable.java:89)
	at org.eclipse.swt.widgets.Widget.sendEvent(Widget.java:1062)
	at org.eclipse.swt.widgets.Widget.sendEvent(Widget.java:1086)
	at org.eclipse.swt.widgets.Widget.sendEvent(Widget.java:1067)
	at org.eclipse.swt.widgets.Control.sendResize(Control.java:2659)
	at org.eclipse.swt.widgets.Composite.sendResize(Composite.java:995)
	at org.eclipse.swt.widgets.Composite.setBounds(Composite.java:1044)
	at org.eclipse.swt.widgets.Control.setBounds(Control.java:2787)
	at org.eclipse.swt.widgets.Control.setBounds(Control.java:2783)
	at org.eclipse.swt.layout.GridLayout.layout(GridLayout.java:690)
	at org.eclipse.swt.layout.GridLayout.layout(GridLayout.java:194)
	at org.eclipse.swt.widgets.Composite.updateLayout(Composite.java:1282)
	at org.eclipse.swt.widgets.Composite.sendResize(Composite.java:999)
	at org.eclipse.swt.widgets.Composite.setBounds(Composite.java:1044)
	at org.eclipse.swt.widgets.Control.setBounds(Control.java:2787)
	at org.eclipse.swt.widgets.Control.setBounds(Control.java:2783)
	at org.eclipse.swt.layout.GridLayout.layout(GridLayout.java:690)
	at org.eclipse.swt.layout.GridLayout.layout(GridLayout.java:194)
	at org.eclipse.swt.widgets.Composite.updateLayout(Composite.java:1282)
	at org.eclipse.swt.widgets.Composite.sendResize(Composite.java:999)
	at org.eclipse.swt.widgets.Composite.setBounds(Composite.java:1044)
	at org.eclipse.swt.widgets.Control.setBounds(Control.java:2787)
	at org.eclipse.swt.widgets.Control.setBounds(Control.java:2783)
	at org.eclipse.swt.layout.GridLayout.layout(GridLayout.java:690)
	at org.eclipse.swt.layout.GridLayout.layout(GridLayout.java:194)
	at org.eclipse.swt.widgets.Composite.updateLayout(Composite.java:1282)
	at org.eclipse.swt.widgets.Composite.WM_SIZE(Composite.java:1671)
	at org.eclipse.swt.widgets.Control.windowProc(Control.java:4239)
	at org.eclipse.swt.widgets.Display.windowProc(Display.java:4891)
	at org.eclipse.swt.internal.win32.OS.$$YJP$$DefWindowProcW(Native Method)
	at org.eclipse.swt.internal.win32.OS.DefWindowProcW(OS.java)
	at org.eclipse.swt.internal.win32.OS.DefWindowProc(OS.java:2457)
	at org.eclipse.swt.widgets.Scrollable.callWindowProc(Scrollable.java:80)
	at org.eclipse.swt.widgets.Control.WM_WINDOWPOSCHANGED(Control.java:4975)
	at org.eclipse.swt.widgets.Control.windowProc(Control.java:4249)
	at org.eclipse.swt.widgets.Display.windowProc(Display.java:4891)
	at org.eclipse.swt.internal.win32.OS.$$YJP$$SetWindowPos(Native Method)
	at org.eclipse.swt.internal.win32.OS.SetWindowPos(OS.java)
	at org.eclipse.swt.widgets.Widget.SetWindowPos(Widget.java:1465)
	at org.eclipse.swt.widgets.Control.setBounds(Control.java:2826)
	at org.eclipse.swt.widgets.Composite.setBounds(Composite.java:1038)
	at org.eclipse.swt.widgets.Control.setBounds(Control.java:2787)
	at org.eclipse.swt.widgets.Control.setBounds(Control.java:2783)
	at org.eclipse.swt.layout.FillLayout.layout(FillLayout.java:201)
	at org.eclipse.swt.widgets.Composite.updateLayout(Composite.java:1282)
	at org.eclipse.swt.widgets.Composite.WM_SIZE(Composite.java:1671)
	at org.eclipse.swt.widgets.Control.windowProc(Control.java:4239)
	at org.eclipse.swt.widgets.Display.windowProc(Display.java:4891)
	at org.eclipse.swt.internal.win32.OS.$$YJP$$DefWindowProcW(Native Method)
	at org.eclipse.swt.internal.win32.OS.DefWindowProcW(OS.java)
	at org.eclipse.swt.internal.win32.OS.DefWindowProc(OS.java:2457)
	at org.eclipse.swt.widgets.Scrollable.callWindowProc(Scrollable.java:80)
	at org.eclipse.swt.widgets.Control.WM_WINDOWPOSCHANGED(Control.java:4975)
	at org.eclipse.swt.widgets.Control.windowProc(Control.java:4249)
	at org.eclipse.swt.widgets.Display.windowProc(Display.java:4904)
	at org.eclipse.swt.internal.win32.OS.$$YJP$$EndDeferWindowPos(Native Method)
	at org.eclipse.swt.internal.win32.OS.EndDeferWindowPos(OS.java)
	at org.eclipse.swt.widgets.Composite.resizeChildren(Composite.java:968)
	at org.eclipse.swt.widgets.Composite.resizeChildren(Composite.java:934)
	at org.eclipse.swt.widgets.Composite.setResizeChildren(Composite.java:1145)
	at org.eclipse.swt.widgets.Composite.WM_SIZE(Composite.java:1675)
	at org.eclipse.swt.widgets.Control.windowProc(Control.java:4239)
	at org.eclipse.swt.widgets.Display.windowProc(Display.java:4891)
	at org.eclipse.swt.internal.win32.OS.$$YJP$$DefWindowProcW(Native Method)
	at org.eclipse.swt.internal.win32.OS.DefWindowProcW(OS.java)
	at org.eclipse.swt.internal.win32.OS.DefWindowProc(OS.java:2457)
	at org.eclipse.swt.widgets.Scrollable.callWindowProc(Scrollable.java:80)
	at org.eclipse.swt.widgets.Control.WM_WINDOWPOSCHANGED(Control.java:4975)
	at org.eclipse.swt.widgets.Control.windowProc(Control.java:4249)
	at org.eclipse.swt.widgets.Display.windowProc(Display.java:4891)
	at org.eclipse.swt.internal.win32.OS.$$YJP$$SetWindowPos(Native Method)
	at org.eclipse.swt.internal.win32.OS.SetWindowPos(OS.java)
	at org.eclipse.swt.widgets.Widget.SetWindowPos(Widget.java:1465)
	at org.eclipse.swt.widgets.Control.setBounds(Control.java:2826)
	at org.eclipse.swt.widgets.Composite.setBounds(Composite.java:1038)
	at org.eclipse.swt.widgets.Control.setBounds(Control.java:2787)
	at org.eclipse.swt.widgets.Control.setBounds(Control.java:2783)
	at org.eclipse.swt.layout.FillLayout.layout(FillLayout.java:201)
	at org.eclipse.swt.widgets.Composite.updateLayout(Composite.java:1282)
	at org.eclipse.swt.widgets.Composite.WM_SIZE(Composite.java:1671)
	at org.eclipse.swt.widgets.Control.windowProc(Control.java:4239)
	at org.eclipse.swt.widgets.Display.windowProc(Display.java:4891)
	at org.eclipse.swt.internal.win32.OS.$$YJP$$DefWindowProcW(Native Method)
	at org.eclipse.swt.internal.win32.OS.DefWindowProcW(OS.java)
	at org.eclipse.swt.internal.win32.OS.DefWindowProc(OS.java:2457)
	at org.eclipse.swt.widgets.Scrollable.callWindowProc(Scrollable.java:80)
	at org.eclipse.swt.widgets.Control.WM_WINDOWPOSCHANGED(Control.java:4975)
	at org.eclipse.swt.widgets.Control.windowProc(Control.java:4249)
	at org.eclipse.swt.widgets.Display.windowProc(Display.java:4891)
	at org.eclipse.swt.internal.win32.OS.$$YJP$$SetWindowPos(Native Method)
	at org.eclipse.swt.internal.win32.OS.SetWindowPos(OS.java)
	at org.eclipse.swt.widgets.Widget.SetWindowPos(Widget.java:1465)
	at org.eclipse.swt.widgets.Control.setBounds(Control.java:2826)
	at org.eclipse.swt.widgets.Composite.setBounds(Composite.java:1038)
	at org.eclipse.swt.widgets.Control.setBounds(Control.java:2787)
	at org.eclipse.swt.widgets.Control.setBounds(Control.java:2783)
	at org.eclipse.swt.layout.FillLayout.layout(FillLayout.java:201)
	at org.eclipse.swt.widgets.Composite.updateLayout(Composite.java:1282)
	at org.eclipse.swt.widgets.Composite.WM_SIZE(Composite.java:1671)
	at org.eclipse.swt.widgets.Control.windowProc(Control.java:4239)
	at org.eclipse.swt.widgets.Display.windowProc(Display.java:4891)
	at org.eclipse.swt.internal.win32.OS.$$YJP$$DefWindowProcW(Native Method)
	at org.eclipse.swt.internal.win32.OS.DefWindowProcW(OS.java)
	at org.eclipse.swt.internal.win32.OS.DefWindowProc(OS.java:2457)
	at org.eclipse.swt.widgets.Scrollable.callWindowProc(Scrollable.java:80)
	at org.eclipse.swt.widgets.Control.WM_WINDOWPOSCHANGED(Control.java:4975)
	at org.eclipse.swt.widgets.Control.windowProc(Control.java:4249)
	at org.eclipse.swt.widgets.Display.windowProc(Display.java:4891)
	at org.eclipse.swt.internal.win32.OS.$$YJP$$SetWindowPos(Native Method)
	at org.eclipse.swt.internal.win32.OS.SetWindowPos(OS.java)
	at org.eclipse.swt.widgets.Widget.SetWindowPos(Widget.java:1465)
	at org.eclipse.swt.widgets.Control.setBounds(Control.java:2826)
	at org.eclipse.swt.widgets.Composite.setBounds(Composite.java:1038)
	at org.eclipse.swt.widgets.Control.setBounds(Control.java:2787)
	at org.eclipse.swt.widgets.Control.setBounds(Control.java:2783)
	at org.eclipse.swt.widgets.Control.setBounds(Control.java:2850)
	at org.eclipse.ui.internal.LayoutPart.setBounds(LayoutPart.java:300)
	at org.eclipse.ui.internal.presentations.PresentablePart.setBounds(PresentablePart.java:170)
	at org.eclipse.ui.internal.presentations.util.PresentablePartFolder.layoutContent(PresentablePartFolder.java:131)
	at org.eclipse.ui.internal.presentations.util.PresentablePartFolder.layout(PresentablePartFolder.java:412)
	at org.eclipse.ui.internal.presentations.util.PresentablePartFolder.select(PresentablePartFolder.java:292)
	at org.eclipse.ui.internal.presentations.util.LeftToRightTabOrder.select(LeftToRightTabOrder.java:65)
	at org.eclipse.ui.internal.presentations.util.TabbedStackPresentation.selectPart(TabbedStackPresentation.java:473)
	at org.eclipse.ui.internal.PartStack.refreshPresentationSelection(PartStack.java:1245)
	at org.eclipse.ui.internal.PartStack.setSelection(PartStack.java:1198)
	at org.eclipse.ui.internal.WorkbenchPage.internalBringToTop(WorkbenchPage.java:792)
	at org.eclipse.ui.internal.WorkbenchPage.internalActivate(WorkbenchPage.java:616)
	at org.eclipse.ui.internal.WorkbenchPage.activate(WorkbenchPage.java:589)
	at org.eclipse.ui.internal.WorkbenchPage.busyOpenEditorBatched(WorkbenchPage.java:2875)
	at org.eclipse.ui.internal.WorkbenchPage.busyOpenEditor(WorkbenchPage.java:2768)
	at org.eclipse.ui.internal.WorkbenchPage.access$11(WorkbenchPage.java:2760)
	at org.eclipse.ui.internal.WorkbenchPage$10.run(WorkbenchPage.java:2711)
	at org.eclipse.swt.custom.BusyIndicator.showWhile(BusyIndicator.java:70)
	at org.eclipse.ui.internal.WorkbenchPage.openEditor(WorkbenchPage.java:2707)
	at org.eclipse.ui.internal.WorkbenchPage.openEditor(WorkbenchPage.java:2691)
	at org.eclipse.ui.internal.WorkbenchPage.openEditor(WorkbenchPage.java:2682)
	at org.eclipse.ui.internal.NavigationHistoryEntry.restoreLocation(NavigationHistoryEntry.java:66)
	at org.eclipse.ui.internal.NavigationHistory.gotoEntry(NavigationHistory.java:455)
	at org.eclipse.ui.internal.NavigationHistory.shiftEntry(NavigationHistory.java:520)
	at org.eclipse.ui.internal.NavigationHistory.backward(NavigationHistory.java:504)
	at org.eclipse.ui.internal.NavigationHistoryAction.run(NavigationHistoryAction.java:242)
	at org.eclipse.jface.action.Action.runWithEvent(Action.java:498)
	at org.eclipse.jface.commands.ActionHandler.execute(ActionHandler.java:119)
	at org.eclipse.core.commands.Command.executeWithChecks(Command.java:476)
	at org.eclipse.core.commands.ParameterizedCommand.executeWithChecks(ParameterizedCommand.java:508)
	at org.eclipse.ui.internal.handlers.HandlerService.executeCommand(HandlerService.java:169)
	at org.eclipse.ui.internal.keys.WorkbenchKeyboard.executeCommand(WorkbenchKeyboard.java:468)
	at org.eclipse.ui.internal.keys.WorkbenchKeyboard.press(WorkbenchKeyboard.java:786)
	at org.eclipse.ui.internal.keys.WorkbenchKeyboard.processKeyEvent(WorkbenchKeyboard.java:885)
	at org.eclipse.ui.internal.keys.WorkbenchKeyboard.filterKeySequenceBindings(WorkbenchKeyboard.java:567)
	at org.eclipse.ui.internal.keys.WorkbenchKeyboard.access$3(WorkbenchKeyboard.java:508)
	at org.eclipse.ui.internal.keys.WorkbenchKeyboard$KeyDownFilter.handleEvent(WorkbenchKeyboard.java:123)
	at org.eclipse.swt.widgets.EventTable.sendEvent(EventTable.java:89)
	at org.eclipse.swt.widgets.Display.filterEvent(Display.java:1254)
	at org.eclipse.swt.widgets.Widget.sendEvent(Widget.java:1061)
	at org.eclipse.swt.widgets.Widget.sendEvent(Widget.java:1086)
	at org.eclipse.swt.widgets.Widget.sendEvent(Widget.java:1071)
	at org.eclipse.swt.widgets.Widget.sendKeyEvent(Widget.java:1112)
	at org.eclipse.swt.widgets.Widget.sendKeyEvent(Widget.java:1108)
	at org.eclipse.swt.widgets.Widget.wmSysKeyDown(Widget.java:2566)
	at org.eclipse.swt.widgets.Control.WM_SYSKEYDOWN(Control.java:4947)
	at org.eclipse.swt.widgets.Control.windowProc(Control.java:4243)
	at org.eclipse.swt.widgets.Canvas.windowProc(Canvas.java:341)
	at org.eclipse.swt.widgets.Display.windowProc(Display.java:4904)
	at org.eclipse.swt.internal.win32.OS.$$YJP$$DispatchMessageW(Native Method)
	at org.eclipse.swt.internal.win32.OS.DispatchMessageW(OS.java)
	at org.eclipse.swt.internal.win32.OS.DispatchMessage(OS.java:2462)
	at org.eclipse.swt.widgets.Display.readAndDispatch(Display.java:3673)
	at org.eclipse.ui.internal.Workbench.runEventLoop(Workbench.java:2640)
	at org.eclipse.ui.internal.Workbench.runUI(Workbench.java:2604)
	at org.eclipse.ui.internal.Workbench.access$4(Workbench.java:2438)
	at org.eclipse.ui.internal.Workbench$7.run(Workbench.java:671)
	at org.eclipse.core.databinding.observable.Realm.runWithDefault(Realm.java:332)
	at org.eclipse.ui.internal.Workbench.createAndRunWorkbench(Workbench.java:664)
	at org.eclipse.ui.PlatformUI.createAndRunWorkbench(PlatformUI.java:149)
	at org.eclipse.ui.internal.ide.application.IDEApplication.start(IDEApplication.java:115)
	at org.eclipse.equinox.internal.app.EclipseAppHandle.run(EclipseAppHandle.java:196)
	at org.eclipse.core.runtime.internal.adaptor.EclipseAppLauncher.runApplication(EclipseAppLauncher.java:110)
	at org.eclipse.core.runtime.internal.adaptor.EclipseAppLauncher.start(EclipseAppLauncher.java:79)
	at org.eclipse.core.runtime.adaptor.EclipseStarter.run(EclipseStarter.java:369)
	at org.eclipse.core.runtime.adaptor.EclipseStarter.run(EclipseStarter.java:179)
	at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
	at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
	at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
	at java.lang.reflect.Method.invoke(Method.java:597)
	at org.eclipse.equinox.launcher.Main.invokeFramework(Main.java:622)
	at org.eclipse.equinox.launcher.Main.basicRun(Main.java:577)
	at org.eclipse.equinox.launcher.Main.run(Main.java:1410)
	at org.eclipse.equinox.launcher.Main.main(Main.java:1386)
Comment 1 Markus Keller CLA 2010-12-01 10:09:52 EST
Created attachment 184267 [details]
Fix
Comment 2 Markus Keller CLA 2010-12-01 10:12:24 EST
Fixed in HEAD.

Pawel, you might want to apply the same fix to the debug BreadcrumbViewer
(I didn't check if it's possible to run into the same problem there).
Comment 3 Dani Megert CLA 2010-12-01 11:28:36 EST
(In reply to comment #2)
> Fixed in HEAD.
> 
> Pawel, you might want to apply the same fix to the debug BreadcrumbViewer
> (I didn't check if it's possible to run into the same problem there).
I've fixed this in HEAD.
Available in builds >= N20101201-2000.