diff options
Diffstat (limited to 'propertysheet/src/org/eclipse')
2 files changed, 31 insertions, 0 deletions
diff --git a/propertysheet/src/org/eclipse/wb/internal/core/model/property/editor/presentation/ButtonPropertyEditorPresentation.java b/propertysheet/src/org/eclipse/wb/internal/core/model/property/editor/presentation/ButtonPropertyEditorPresentation.java index e33970d..892681e 100644 --- a/propertysheet/src/org/eclipse/wb/internal/core/model/property/editor/presentation/ButtonPropertyEditorPresentation.java +++ b/propertysheet/src/org/eclipse/wb/internal/core/model/property/editor/presentation/ButtonPropertyEditorPresentation.java @@ -111,4 +111,15 @@ public abstract class ButtonPropertyEditorPresentation extends PropertyEditorPre * Handles click on {@link Button}. */ protected abstract void onClick(PropertyTable propertyTable, Property property) throws Exception; + + // Temporary workaround for https://bugs.eclipse.org/bugs/show_bug.cgi?id=388574 + public static boolean isInWorkaround; + public void click(PropertyTable propertyTable, Property property) throws Exception { + try { + isInWorkaround = true; + onClick(propertyTable, property); + } finally { + isInWorkaround = false; + } + } } diff --git a/propertysheet/src/org/eclipse/wb/internal/core/model/property/table/PropertyTable.java b/propertysheet/src/org/eclipse/wb/internal/core/model/property/table/PropertyTable.java index 7a49cb3..20233e9 100644 --- a/propertysheet/src/org/eclipse/wb/internal/core/model/property/table/PropertyTable.java +++ b/propertysheet/src/org/eclipse/wb/internal/core/model/property/table/PropertyTable.java @@ -38,12 +38,14 @@ import org.eclipse.swt.widgets.ScrollBar; import org.eclipse.wb.draw2d.IColorConstants; import org.eclipse.wb.draw2d.ICursorConstants; import org.eclipse.wb.internal.core.DesignerPlugin; +import org.eclipse.wb.internal.core.EnvironmentUtils; import org.eclipse.wb.internal.core.model.property.Property; import org.eclipse.wb.internal.core.model.property.category.PropertyCategory; import org.eclipse.wb.internal.core.model.property.category.PropertyCategoryProvider; import org.eclipse.wb.internal.core.model.property.category.PropertyCategoryProviders; import org.eclipse.wb.internal.core.model.property.editor.PropertyEditor; import org.eclipse.wb.internal.core.model.property.editor.complex.IComplexPropertyEditor; +import org.eclipse.wb.internal.core.model.property.editor.presentation.ButtonPropertyEditorPresentation; import org.eclipse.wb.internal.core.model.property.editor.presentation.PropertyEditorPresentation; import org.eclipse.wb.internal.core.utils.check.Assert; import org.eclipse.wb.internal.core.utils.ui.DrawUtils; @@ -558,6 +560,24 @@ public class PropertyTable extends Canvas implements ISelectionProvider { } // set bounds setActiveEditorBounds(); + } catch (NullPointerException e) { + if (EnvironmentUtils.IS_MAC) { + // Workaround for https://bugs.eclipse.org/bugs/show_bug.cgi?id=388574 + PropertyEditor editor = property.getEditor(); + PropertyEditorPresentation presentation = editor.getPresentation(); + if (presentation instanceof ButtonPropertyEditorPresentation) { + ButtonPropertyEditorPresentation button = + (ButtonPropertyEditorPresentation) presentation; + try { + button.click(this, property); + } catch (Exception ex) { + deactivateEditor(false); + handleException(e); + } + return; + } + } + DesignerPlugin.log(e); } catch (Throwable e) { DesignerPlugin.log(e); } |