summaryrefslogtreecommitdiffstats
path: root/bundles/org.eclipse.swt/Eclipse SWT Custom Widgets
diff options
context:
space:
mode:
authorBogdan Gheorghe <gheorghe@ca.ibm.com>2012-11-30 10:45:51 -0500
committerBogdan Gheorghe <gheorghe@ca.ibm.com>2012-11-30 10:45:51 -0500
commit3dd7eb170ee8cddbb9ff408c246e689466b122ee (patch)
tree66fac5d0182a2515981c7a8b74d4fc590a141d76 /bundles/org.eclipse.swt/Eclipse SWT Custom Widgets
parent870787fef214f5a7a4ed7ed77aab11c3ab3a4ecc (diff)
downloadeclipse.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.java7
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);
}