Download
Getting Started
Members
Projects
Community
Marketplace
Events
Planet Eclipse
Newsletter
Videos
Participate
Report a Bug
Forums
Mailing Lists
Wiki
IRC
How to Contribute
Working Groups
Automotive
Internet of Things
LocationTech
Long-Term Support
PolarSys
Science
OpenMDM
More
Community
Marketplace
Events
Planet Eclipse
Newsletter
Videos
Participate
Report a Bug
Forums
Mailing Lists
Wiki
IRC
How to Contribute
Working Groups
Automotive
Internet of Things
LocationTech
Long-Term Support
PolarSys
Science
OpenMDM
Toggle navigation
Bugzilla – Attachment 223627 Details for
Bug 377113
CTabFolder: View tab folder 'leaks' in Classic theme (has unclosed outer border)
Home
|
New
|
Browse
|
Search
|
[?]
|
Reports
|
Requests
|
Help
|
Log In
[x]
|
Terms of Use
|
Copyright Agent
[patch]
Fix
eclipse.platform.swt.patch (text/plain), 7.25 KB, created by
Markus Keller
on 2012-11-15 13:17:21 EST
(
hide
)
Description:
Fix
Filename:
MIME Type:
Creator:
Markus Keller
Created:
2012-11-15 13:17:21 EST
Size:
7.25 KB
patch
obsolete
>### Eclipse Workspace Patch 1.0 >#P org.eclipse.swt >diff --git Eclipse SWT Custom Widgets/common/org/eclipse/swt/custom/CTabFolder.java Eclipse SWT Custom Widgets/common/org/eclipse/swt/custom/CTabFolder.java >index eedc76c..d7faa88 100644 >--- Eclipse SWT Custom Widgets/common/org/eclipse/swt/custom/CTabFolder.java >+++ Eclipse SWT Custom Widgets/common/org/eclipse/swt/custom/CTabFolder.java >@@ -152,7 +152,8 @@ > boolean minimized = false; > boolean showMax = false; > boolean maximized = false; >- ToolBar minMaxTb; >+ ToolBar minTb; >+ ToolBar maxTb; > ToolItem maxItem; > ToolItem minItem; > Image maxImage; >@@ -440,9 +441,10 @@ > for (int i = 0; i < rects.length; i++) { > rects[i] = new Rectangle(0, 0, 0, 0); > } >+ Rectangle headerTrim = renderer.computeTrim(CTabFolderRenderer.PART_HEADER, SWT.NONE, 0, 0, 0, 0); > Rectangle trim = renderer.computeTrim(CTabFolderRenderer.PART_BORDER, SWT.NONE, 0, 0, 0, 0); >- int borderRight = trim.width + trim.x; >- int borderLeft = -trim.x; >+ int borderRight = trim.width + trim.x + headerTrim.x + headerTrim.width; >+ int borderLeft = -trim.x - headerTrim.x; > int borderBottom = trim.height + trim.y; > int borderTop = -trim.y; > >@@ -644,7 +646,13 @@ > Point size = renderer.computeSize(button, SWT.NONE, tempGC, SWT.DEFAULT, SWT.DEFAULT); > tempGC.dispose(); > Rectangle trim = renderer.computeTrim(button, SWT.NONE, 0, 0, 0, 0); >- Image image = new Image (display, size.x - trim.width, size.y - trim.height); >+ int width = size.x - trim.width; >+ if (button == CTabFolderRenderer.PART_MAX_BUTTON >+ || button == CTabFolderRenderer.PART_MIN_BUTTON && !showMax) { >+ Rectangle headerTrim = renderer.computeTrim(CTabFolderRenderer.PART_HEADER, SWT.NONE, 0, 0, 0, 0); >+ width = width - headerTrim.width + headerTrim.x; //Make rightmost button narrower so that its bounds don't intersect with the topRight rounded corner >+ } >+ Image image = new Image (display, width, size.y - trim.height); > GC gc = new GC (image); > RGB transparent; > if (button == CTabFolderRenderer.PART_CHEVRON_BUTTON) { >@@ -1460,13 +1468,22 @@ > } > }); > } >-void initAccessibleMinMaxTb() { >- minMaxTb.getAccessible().addAccessibleListener(new AccessibleAdapter() { >+void initAccessibleMinTb() { >+ minTb.getAccessible().addAccessibleListener(new AccessibleAdapter() { > public void getName(AccessibleEvent e) { > if (e.childID != ACC.CHILDID_SELF) { >- if (minItem != null && e.childID == minMaxTb.indexOf(minItem)) { >+ if (minItem != null && e.childID == minTb.indexOf(minItem)) { > e.result = minItem.getToolTipText(); >- } else if (maxItem != null && e.childID == minMaxTb.indexOf(maxItem)) { >+ } >+ } >+ } >+ }); >+} >+void initAccessibleMaxTb() { >+ maxTb.getAccessible().addAccessibleListener(new AccessibleAdapter() { >+ public void getName(AccessibleEvent e) { >+ if (e.childID != ACC.CHILDID_SELF) { >+ if (maxItem != null && e.childID == maxTb.indexOf(maxItem)) { > e.result = maxItem.getToolTipText(); > } > } >@@ -1594,7 +1611,8 @@ > > minItem = null; > maxItem = null; >- minMaxTb = null; >+ minTb = null; >+ maxTb = null; > > chevronItem = null; > chevronTb = null; >@@ -2362,39 +2380,25 @@ > } > void setButtonBounds(GC gc) { > Point size = getSize(); >- // max button > Display display = getDisplay(); >- if (showMax) { >- if (minMaxTb == null) { >- minMaxTb = new ToolBar(this, SWT.FLAT); >- initAccessibleMinMaxTb(); >- addTabControl(minMaxTb, SWT.TRAIL, 0, false); >- } >- if (maxItem == null) { >- maxItem = new ToolItem(minMaxTb, SWT.PUSH); >- if (maxImage == null) { >- maxImage = createButtonImage(display, CTabFolderRenderer.PART_MAX_BUTTON); >- } >- maxItem.setImage(maxImage); >- maxItem.setToolTipText(maximized ? SWT.getMessage("SWT_Restore") : SWT.getMessage("SWT_Maximize")); //$NON-NLS-1$ //$NON-NLS-2$ >- maxItem.addListener(SWT.Selection, listener); >- } >- } else { >- //might need to remove it if already there >- if (maxItem != null) { >- maxItem.dispose(); >- maxItem = null; >- } >- } > // min button > if (showMin) { >- if (minMaxTb == null) { >- minMaxTb = new ToolBar(this, SWT.FLAT); >- initAccessibleMinMaxTb(); >- addTabControl(minMaxTb, SWT.TRAIL, 0, false); >+ if (minTb == null) { >+ minTb = new ToolBar(this, SWT.FLAT); >+ initAccessibleMinTb(); >+ addTabControl(minTb, SWT.TRAIL, maxItem != null ? 1 : 0, false); >+ } >+ if (minItem != null && (showMax || maxItem != null)) { >+ // need to recreate as normal/narrow version >+ minItem.dispose(); >+ minItem = null; > } > if (minItem == null) { >- minItem = new ToolItem(minMaxTb, SWT.PUSH, 0); >+ minItem = new ToolItem(minTb, SWT.PUSH, 0); >+ if (minImage != null && (showMax || maxItem != null)) { >+ minImage.dispose(); >+ minImage = null; >+ } > if (minImage == null) { > minImage = createButtonImage(display, CTabFolderRenderer.PART_MIN_BUTTON); > } >@@ -2408,11 +2412,39 @@ > minItem.dispose(); > minItem = null; > } >+ if (minTb != null) { >+ removeTabControl(minTb, false); >+ minTb.dispose(); >+ minTb = null; >+ } > } >- if (minMaxTb != null && minMaxTb.getItemCount() == 0) { >- removeTabControl(minMaxTb, false); >- minMaxTb.dispose(); >- minMaxTb = null; >+ // max button >+ if (showMax) { >+ if (maxTb == null) { >+ maxTb = new ToolBar(this, SWT.FLAT); >+ initAccessibleMaxTb(); >+ addTabControl(maxTb, SWT.TRAIL, 0, false); >+ } >+ if (maxItem == null) { >+ maxItem = new ToolItem(maxTb, SWT.PUSH); >+ if (maxImage == null) { >+ maxImage = createButtonImage(display, CTabFolderRenderer.PART_MAX_BUTTON); >+ } >+ maxItem.setImage(maxImage); >+ maxItem.setToolTipText(maximized ? SWT.getMessage("SWT_Restore") : SWT.getMessage("SWT_Maximize")); //$NON-NLS-1$ //$NON-NLS-2$ >+ maxItem.addListener(SWT.Selection, listener); >+ } >+ } else { >+ //might need to remove it if already there >+ if (maxItem != null) { >+ maxItem.dispose(); >+ maxItem = null; >+ } >+ if (maxTb != null) { >+ removeTabControl(maxTb, false); >+ maxTb.dispose(); >+ maxTb = null; >+ } > } > if (showChevron) { > int itemCount = items.length; >@@ -2806,7 +2838,7 @@ > if (this.maximized == maximize) return; > if (maximize && this.minimized) setMinimized(false); > this.maximized = maximize; >- if (minMaxTb != null && maxItem != null) { >+ if (maxTb != null && maxItem != null) { > if (maxImage != null) maxImage.dispose(); > maxImage = createButtonImage(getDisplay(), CTabFolderRenderer.PART_MAX_BUTTON); > maxItem.setImage(maxImage); >@@ -2850,7 +2882,7 @@ > if (this.minimized == minimize) return; > if (minimize && this.maximized) setMaximized(false); > this.minimized = minimize; >- if (minMaxTb != null && minItem != null) { >+ if (minTb != null && minItem != null) { > if (minImage != null) minImage.dispose(); > minImage = createButtonImage(getDisplay(), CTabFolderRenderer.PART_MIN_BUTTON); > minItem.setImage(minImage); >diff --git Eclipse SWT Custom Widgets/common/org/eclipse/swt/custom/CTabFolderRenderer.java Eclipse SWT Custom Widgets/common/org/eclipse/swt/custom/CTabFolderRenderer.java >index 5a44c25..3d1746e 100644 >--- Eclipse SWT Custom Widgets/common/org/eclipse/swt/custom/CTabFolderRenderer.java >+++ Eclipse SWT Custom Widgets/common/org/eclipse/swt/custom/CTabFolderRenderer.java >@@ -349,7 +349,10 @@ > } > break; > case PART_HEADER: >- //no trim >+ if (parent.borderVisible) { >+ // leave space for corner radius >+ width = width + 2; >+ } > break; > case PART_MAX_BUTTON: > case PART_MIN_BUTTON:
You cannot view the attachment while viewing its details because your browser does not support IFRAMEs.
View the attachment on a separate page
.
View Attachment As Diff
View Attachment As Raw
Actions:
View
|
Diff
Attachments on
bug 377113
:
214199
|
223627
|
223628
|
223657
|
237133