diff options
author | Bogdan Gheorghe <gheorghe@ca.ibm.com> | 2012-11-30 10:45:51 -0500 |
---|---|---|
committer | Bogdan Gheorghe <gheorghe@ca.ibm.com> | 2012-11-30 10:45:51 -0500 |
commit | 3dd7eb170ee8cddbb9ff408c246e689466b122ee (patch) | |
tree | 66fac5d0182a2515981c7a8b74d4fc590a141d76 /bundles/org.eclipse.swt/Eclipse SWT Custom Widgets | |
parent | 870787fef214f5a7a4ed7ed77aab11c3ab3a4ecc (diff) | |
download | eclipse.platform.swt-3dd7eb170ee8cddbb9ff408c246e689466b122ee.tar.gz eclipse.platform.swt-3dd7eb170ee8cddbb9ff408c246e689466b122ee.tar.xz eclipse.platform.swt-3dd7eb170ee8cddbb9ff408c246e689466b122ee.zip |
Bug 395411 - CTabFolderRenderer created too many times
Diffstat (limited to 'bundles/org.eclipse.swt/Eclipse SWT Custom Widgets')
-rw-r--r-- | bundles/org.eclipse.swt/Eclipse SWT Custom Widgets/common/org/eclipse/swt/custom/CTabFolder.java | 7 |
1 files changed, 5 insertions, 2 deletions
diff --git a/bundles/org.eclipse.swt/Eclipse SWT Custom Widgets/common/org/eclipse/swt/custom/CTabFolder.java b/bundles/org.eclipse.swt/Eclipse SWT Custom Widgets/common/org/eclipse/swt/custom/CTabFolder.java index e039d09a63..9c030fc407 100644 --- a/bundles/org.eclipse.swt/Eclipse SWT Custom Widgets/common/org/eclipse/swt/custom/CTabFolder.java +++ b/bundles/org.eclipse.swt/Eclipse SWT Custom Widgets/common/org/eclipse/swt/custom/CTabFolder.java @@ -124,6 +124,7 @@ public class CTabFolder extends Composite { boolean mru = false; Listener listener; boolean ignoreTraverse; + boolean useDefaultRenderer; /* External Listener management */ CTabFolder2Listener[] folderListeners = new CTabFolder2Listener[0]; @@ -257,6 +258,7 @@ void init(int style) { selectionForeground = display.getSystemColor(SELECTION_FOREGROUND); selectionBackground = display.getSystemColor(SELECTION_BACKGROUND); renderer = new CTabFolderRenderer(this); + useDefaultRenderer = true; controls = new Control[0]; controlAlignments = new int[0]; controlRects = new Rectangle[0]; @@ -2972,9 +2974,10 @@ public void setMRUVisible(boolean show) { */ public void setRenderer(CTabFolderRenderer renderer) { checkWidget(); - if (this.renderer == renderer) return; + if (this.renderer == renderer || (useDefaultRenderer && renderer == null)) return; if (this.renderer != null) this.renderer.dispose(); - if (renderer == null) renderer = new CTabFolderRenderer(this); + useDefaultRenderer = renderer == null; + if (useDefaultRenderer) renderer = new CTabFolderRenderer(this); this.renderer = renderer; updateFolder(REDRAW); } |