mirror of
https://github.com/eclipse-cdt/cdt
synced 2025-06-09 18:56:02 +02:00
Bug 247274 - NullPointerException in Modules view
This commit is contained in:
parent
e9f1594821
commit
cae0db4052
1 changed files with 19 additions and 3 deletions
|
@ -14,6 +14,7 @@ package org.eclipse.cdt.ui;
|
||||||
|
|
||||||
import org.eclipse.jface.viewers.LabelProvider;
|
import org.eclipse.jface.viewers.LabelProvider;
|
||||||
import org.eclipse.swt.graphics.Image;
|
import org.eclipse.swt.graphics.Image;
|
||||||
|
import org.eclipse.swt.widgets.Display;
|
||||||
import org.eclipse.ui.model.WorkbenchLabelProvider;
|
import org.eclipse.ui.model.WorkbenchLabelProvider;
|
||||||
|
|
||||||
import org.eclipse.cdt.core.model.ICElement;
|
import org.eclipse.cdt.core.model.ICElement;
|
||||||
|
@ -82,7 +83,7 @@ public class CElementLabelProvider extends LabelProvider {
|
||||||
|
|
||||||
public final static int SHOW_DEFAULT= new Integer(SHOW_PARAMETERS | SHOW_OVERLAY_ICONS).intValue();
|
public final static int SHOW_DEFAULT= new Integer(SHOW_PARAMETERS | SHOW_OVERLAY_ICONS).intValue();
|
||||||
|
|
||||||
private WorkbenchLabelProvider fWorkbenchLabelProvider;
|
private volatile WorkbenchLabelProvider fWorkbenchLabelProvider;
|
||||||
protected CElementImageProvider fImageLabelProvider;
|
protected CElementImageProvider fImageLabelProvider;
|
||||||
private CUILabelProvider fCElementLabelProvider;
|
private CUILabelProvider fCElementLabelProvider;
|
||||||
|
|
||||||
|
@ -95,7 +96,19 @@ public class CElementLabelProvider extends LabelProvider {
|
||||||
}
|
}
|
||||||
|
|
||||||
public CElementLabelProvider(int flags) {
|
public CElementLabelProvider(int flags) {
|
||||||
fWorkbenchLabelProvider= new WorkbenchLabelProvider();
|
// WorkbenchLabelProvider may only be initialized on the UI thread
|
||||||
|
// http://bugs.eclipse.org/247274
|
||||||
|
if (Display.getCurrent() != null) {
|
||||||
|
fWorkbenchLabelProvider= new WorkbenchLabelProvider();
|
||||||
|
} else {
|
||||||
|
// Delay initialization
|
||||||
|
CUIPlugin.getStandardDisplay().asyncExec(new Runnable() {
|
||||||
|
public void run() {
|
||||||
|
if (fCElementLabelProvider != null) {
|
||||||
|
fWorkbenchLabelProvider= new WorkbenchLabelProvider();
|
||||||
|
}
|
||||||
|
}});
|
||||||
|
}
|
||||||
fImageLabelProvider= new CElementImageProvider();
|
fImageLabelProvider= new CElementImageProvider();
|
||||||
|
|
||||||
fFlags = flags;
|
fFlags = flags;
|
||||||
|
@ -107,7 +120,10 @@ public class CElementLabelProvider extends LabelProvider {
|
||||||
if (element instanceof ICElement) {
|
if (element instanceof ICElement) {
|
||||||
return fCElementLabelProvider.getText(element);
|
return fCElementLabelProvider.getText(element);
|
||||||
}
|
}
|
||||||
return fWorkbenchLabelProvider.getText(element);
|
if (fWorkbenchLabelProvider != null) {
|
||||||
|
return fWorkbenchLabelProvider.getText(element);
|
||||||
|
}
|
||||||
|
return super.getText(element);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
|
Loading…
Add table
Reference in a new issue