Community
Participate
Working Groups
Build Identifier: 20100617-1415 I am getting a NPE when the text widget attached to a SourceViewer doesn't have a vertical scrollbar (getVerticalBar returns null). It looks like some code added in helios doesn't check getVerticalBar against null before using it. here is the stacktrace : java.lang.NullPointerException at org.eclipse.jface.text.source.SourceViewer$RulerLayout.computeScrollArrowHeights(SourceViewer.java:217) at org.eclipse.jface.text.source.SourceViewer$RulerLayout.getVerticalScrollArrowHeights(SourceViewer.java:183) at org.eclipse.jface.text.source.SourceViewer$RulerLayout.layout(SourceViewer.java:155) at org.eclipse.swt.widgets.Composite.updateLayout(Composite.java:1275) at org.eclipse.swt.widgets.Composite.sendResize(Composite.java:979) at org.eclipse.swt.widgets.Composite.setBounds(Composite.java:1024) at org.eclipse.swt.widgets.Control.setBounds(Control.java:2777) at org.eclipse.swt.widgets.Control.setBounds(Control.java:2773) at org.eclipse.swt.layout.FillLayout.layout(FillLayout.java:201) at org.eclipse.swt.widgets.Composite.updateLayout(Composite.java:1275) at org.eclipse.swt.widgets.Composite.WM_SIZE(Composite.java:1664) at org.eclipse.swt.widgets.Control.windowProc(Control.java:4234) at org.eclipse.swt.widgets.Display.windowProc(Display.java:4873) at org.eclipse.swt.internal.win32.OS.DefWindowProcW(Native Method) at org.eclipse.swt.internal.win32.OS.DefWindowProc(OS.java:2454) at org.eclipse.swt.widgets.Scrollable.callWindowProc(Scrollable.java:80) at org.eclipse.swt.widgets.Control.WM_WINDOWPOSCHANGED(Control.java:4970) at org.eclipse.swt.widgets.Control.windowProc(Control.java:4244) at org.eclipse.swt.widgets.Display.windowProc(Display.java:4886) at org.eclipse.swt.internal.win32.OS.EndDeferWindowPos(Native Method) at org.eclipse.swt.widgets.Composite.resizeChildren(Composite.java:948) at org.eclipse.swt.widgets.Composite.resizeChildren(Composite.java:914) at org.eclipse.swt.widgets.Composite.setResizeChildren(Composite.java:1138) at org.eclipse.swt.widgets.Composite.WM_SIZE(Composite.java:1668) at org.eclipse.swt.widgets.Control.windowProc(Control.java:4234) at org.eclipse.swt.widgets.Display.windowProc(Display.java:4873) at org.eclipse.swt.internal.win32.OS.DefWindowProcW(Native Method) at org.eclipse.swt.internal.win32.OS.DefWindowProc(OS.java:2454) at org.eclipse.swt.widgets.Scrollable.callWindowProc(Scrollable.java:80) at org.eclipse.swt.widgets.Control.WM_WINDOWPOSCHANGED(Control.java:4970) at org.eclipse.swt.widgets.Control.windowProc(Control.java:4244) at org.eclipse.swt.widgets.Display.windowProc(Display.java:4873) at org.eclipse.swt.internal.win32.OS.SetWindowPos(Native Method) at org.eclipse.swt.widgets.Widget.SetWindowPos(Widget.java:1456) at org.eclipse.swt.widgets.Control.setBounds(Control.java:2816) at org.eclipse.swt.widgets.Composite.setBounds(Composite.java:1018) at org.eclipse.swt.widgets.Control.setBounds(Control.java:2777) at org.eclipse.swt.widgets.Control.setBounds(Control.java:2773) at org.eclipse.swt.layout.FillLayout.layout(FillLayout.java:201) at org.eclipse.swt.widgets.Composite.updateLayout(Composite.java:1275) at org.eclipse.swt.widgets.Composite.WM_SIZE(Composite.java:1664) at org.eclipse.swt.widgets.Control.windowProc(Control.java:4234) at org.eclipse.swt.widgets.Display.windowProc(Display.java:4873) at org.eclipse.swt.internal.win32.OS.DefWindowProcW(Native Method) at org.eclipse.swt.internal.win32.OS.DefWindowProc(OS.java:2454) at org.eclipse.swt.widgets.Scrollable.callWindowProc(Scrollable.java:80) at org.eclipse.swt.widgets.Control.WM_WINDOWPOSCHANGED(Control.java:4970) at org.eclipse.swt.widgets.Control.windowProc(Control.java:4244) at org.eclipse.swt.widgets.Display.windowProc(Display.java:4886) at org.eclipse.swt.internal.win32.OS.EndDeferWindowPos(Native Method) at org.eclipse.swt.widgets.Composite.resizeChildren(Composite.java:948) at org.eclipse.swt.widgets.Composite.resizeChildren(Composite.java:914) at org.eclipse.swt.widgets.Composite.setResizeChildren(Composite.java:1138) at org.eclipse.swt.widgets.Composite.WM_SIZE(Composite.java:1668) at org.eclipse.swt.widgets.Control.windowProc(Control.java:4234) at org.eclipse.swt.widgets.Display.windowProc(Display.java:4873) at org.eclipse.swt.internal.win32.OS.DefWindowProcW(Native Method) at org.eclipse.swt.internal.win32.OS.DefWindowProc(OS.java:2454) at org.eclipse.swt.widgets.Scrollable.callWindowProc(Scrollable.java:80) at org.eclipse.swt.widgets.Control.WM_WINDOWPOSCHANGED(Control.java:4970) at org.eclipse.swt.widgets.Control.windowProc(Control.java:4244) at org.eclipse.swt.widgets.Display.windowProc(Display.java:4873) at org.eclipse.swt.internal.win32.OS.SetWindowPos(Native Method) at org.eclipse.swt.widgets.Widget.SetWindowPos(Widget.java:1456) at org.eclipse.swt.widgets.Control.setBounds(Control.java:2816) at org.eclipse.swt.widgets.Composite.setBounds(Composite.java:1018) at org.eclipse.swt.widgets.Control.setBounds(Control.java:2777) at org.eclipse.swt.widgets.Control.setBounds(Control.java:2773) at org.eclipse.swt.layout.FillLayout.layout(FillLayout.java:201) at org.eclipse.swt.widgets.Composite.updateLayout(Composite.java:1275) at org.eclipse.swt.widgets.Composite.WM_SIZE(Composite.java:1664) at org.eclipse.swt.widgets.Control.windowProc(Control.java:4234) at org.eclipse.swt.widgets.Display.windowProc(Display.java:4873) at org.eclipse.swt.internal.win32.OS.DefWindowProcW(Native Method) at org.eclipse.swt.internal.win32.OS.DefWindowProc(OS.java:2454) at org.eclipse.swt.widgets.Scrollable.callWindowProc(Scrollable.java:80) at org.eclipse.swt.widgets.Control.WM_WINDOWPOSCHANGED(Control.java:4970) at org.eclipse.swt.widgets.Control.windowProc(Control.java:4244) at org.eclipse.swt.widgets.Display.windowProc(Display.java:4873) at org.eclipse.swt.internal.win32.OS.SetWindowPos(Native Method) at org.eclipse.swt.widgets.Widget.SetWindowPos(Widget.java:1456) at org.eclipse.swt.widgets.Control.setBounds(Control.java:2816) at org.eclipse.swt.widgets.Composite.setBounds(Composite.java:1018) at org.eclipse.swt.widgets.Control.setBounds(Control.java:2777) at org.eclipse.swt.widgets.Control.setBounds(Control.java:2773) at org.eclipse.swt.widgets.Control.setBounds(Control.java:2840) at org.eclipse.swt.layout.FormLayout.layout(FormLayout.java:358) at org.eclipse.swt.layout.FormLayout.layout(FormLayout.java:286) at org.eclipse.swt.widgets.Composite.updateLayout(Composite.java:1275) at org.eclipse.swt.widgets.Composite.updateLayout(Composite.java:1261) at org.eclipse.swt.widgets.Composite.layout(Composite.java:664) at org.eclipse.swt.widgets.Composite.layout(Composite.java:622) at org.eclipse.ui.views.properties.tabbed.TabbedPropertySheetPage$SelectionChangedListener.selectionChanged(TabbedPropertySheetPage.java:224) at org.eclipse.jface.viewers.Viewer$2.run(Viewer.java:162) at org.eclipse.core.runtime.SafeRunner.run(SafeRunner.java:42) at org.eclipse.ui.internal.JFaceUtil$1.run(JFaceUtil.java:49) at org.eclipse.jface.util.SafeRunnable.run(SafeRunnable.java:175) at org.eclipse.jface.viewers.Viewer.fireSelectionChanged(Viewer.java:160) at org.eclipse.jface.viewers.StructuredViewer.updateSelection(StructuredViewer.java:2162) at org.eclipse.jface.viewers.StructuredViewer.handleSelect(StructuredViewer.java:1190) at org.eclipse.jface.viewers.StructuredViewer$4.widgetSelected(StructuredViewer.java:1220) at org.eclipse.jface.util.OpenStrategy.fireSelectionEvent(OpenStrategy.java:228) at org.eclipse.jface.util.OpenStrategy.access$4(OpenStrategy.java:222) at org.eclipse.jface.util.OpenStrategy$1.handleEvent(OpenStrategy.java:389) at org.eclipse.swt.widgets.EventTable.sendEvent(EventTable.java:84) at org.eclipse.swt.widgets.Widget.sendEvent(Widget.java:1053) at org.eclipse.swt.widgets.Widget.sendEvent(Widget.java:1077) at org.eclipse.swt.widgets.Widget.sendEvent(Widget.java:1062) at org.eclipse.swt.widgets.Widget.notifyListeners(Widget.java:774) at org.eclipse.ui.internal.views.properties.tabbed.view.TabbedPropertyList.select(TabbedPropertyList.java:664) at org.eclipse.ui.internal.views.properties.tabbed.view.TabbedPropertyViewer.setSelectionToWidget(TabbedPropertyViewer.java:122) at org.eclipse.jface.viewers.StructuredViewer.setSelectionToWidget(StructuredViewer.java:1741) at org.eclipse.jface.viewers.StructuredViewer.setSelection(StructuredViewer.java:1697) at org.eclipse.jface.viewers.Viewer.setSelection(Viewer.java:392) at org.eclipse.ui.views.properties.tabbed.TabbedPropertySheetPage.setInput(TabbedPropertySheetPage.java:736) at org.eclipse.ui.views.properties.tabbed.TabbedPropertySheetPage.selectionChanged(TabbedPropertySheetPage.java:555) at org.topcased.tabbedproperties.AbstractTabbedPropertySheetPage.selectionChanged(AbstractTabbedPropertySheetPage.java:124) at org.eclipse.ui.views.properties.PropertySheet.selectionChanged(PropertySheet.java:365) at org.eclipse.ui.internal.AbstractSelectionService.fireSelection(AbstractSelectionService.java:156) at org.eclipse.ui.internal.AbstractSelectionService$1.selectionChanged(AbstractSelectionService.java:62) at org.eclipse.gmf.runtime.diagram.ui.parts.DiagramGraphicalViewer.flushSelectionEvents(DiagramGraphicalViewer.java:269) at org.eclipse.gmf.runtime.diagram.ui.parts.DiagramGraphicalViewer$1.run(DiagramGraphicalViewer.java:247) at org.eclipse.swt.widgets.RunnableLock.run(RunnableLock.java:35) at org.eclipse.swt.widgets.Synchronizer.runAsyncMessages(Synchronizer.java:134) at org.eclipse.swt.widgets.Display.runAsyncMessages(Display.java:4041) at org.eclipse.swt.widgets.Display.readAndDispatch(Display.java:3660) at org.eclipse.ui.internal.Workbench.runEventLoop(Workbench.java:2629) at org.eclipse.ui.internal.Workbench.runUI(Workbench.java:2593) at org.eclipse.ui.internal.Workbench.access$4(Workbench.java:2427) at org.eclipse.ui.internal.Workbench$7.run(Workbench.java:670) at org.eclipse.core.databinding.observable.Realm.runWithDefault(Realm.java:332) at org.eclipse.ui.internal.Workbench.createAndRunWorkbench(Workbench.java:663) 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(Unknown Source) at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source) at java.lang.reflect.Method.invoke(Unknown Source) at org.eclipse.equinox.launcher.Main.invokeFramework(Main.java:619) at org.eclipse.equinox.launcher.Main.basicRun(Main.java:574) at org.eclipse.equinox.launcher.Main.run(Main.java:1407) at org.eclipse.equinox.launcher.Main.main(Main.java:1383) Reproducible: Always
JFace Text code is owned by Platform/Text.
thanks, changed.
Do you have steps to reproduce?
> Do you have steps to reproduce? It's OK, can easily be reproduced by adding styles &= ~SWT.V_SCROLL; in front of createControl(parent, styles); in the constructor of SourceViewer.
Created attachment 173441 [details] Fix An additional problem occurs when both scrollbars are hidden, e.g. with: styles &= ~(SWT.V_SCROLL | SWT.H_SCROLL); In that case, the header control (that shows if a file contains an error/warning) is not visible any more. Fix is in RulerLayout#layout(..).
Fix released to HEAD.
thanks for the quick fix, it works.
Released to R3_6_maintenance.
Starting verification...
Verified for 3.6.1 RC2 with M20100825-0800.
Verified on Windows 7 using M20100825-0800.