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 163443 Details for
Bug 307199
[Compatibility] 'Javadoc' and 'Declaration' view doesn't follow editor selection
Home
|
New
|
Browse
|
Search
|
[?]
|
Reports
|
Requests
|
Help
|
Log In
[x]
|
Terms of Use
|
Copyright Agent
Some Eclipse Foundation services are deprecated, or will be soon. Please ensure you've read
this important communication.
[patch]
Patch that eliminates the recursion in the StackRenderer
patch(307199) (text/plain), 5.55 KB, created by
Eric Moffatt
on 2010-03-30 15:30:04 EDT
(
hide
)
Description:
Patch that eliminates the recursion in the StackRenderer
Filename:
MIME Type:
Creator:
Eric Moffatt
Created:
2010-03-30 15:30:04 EDT
Size:
5.55 KB
patch
obsolete
>### Eclipse Workspace Patch 1.0 >#P org.eclipse.e4.ui.workbench >Index: src/org/eclipse/e4/workbench/ui/internal/PartServiceImpl.java >=================================================================== >RCS file: /cvsroot/eclipse/e4/org.eclipse.e4.ui/bundles/org.eclipse.e4.ui.workbench/src/org/eclipse/e4/workbench/ui/internal/PartServiceImpl.java,v >retrieving revision 1.60 >diff -u -r1.60 PartServiceImpl.java >--- src/org/eclipse/e4/workbench/ui/internal/PartServiceImpl.java 30 Mar 2010 14:40:11 -0000 1.60 >+++ src/org/eclipse/e4/workbench/ui/internal/PartServiceImpl.java 30 Mar 2010 18:47:50 -0000 >@@ -298,7 +298,7 @@ > * .MPart) > */ > public void activate(MPart part) { >- if (!isInContainer(part)) { >+ if (activePart == part || !isInContainer(part)) { > return; > } > IEclipseContext curContext = part.getContext(); >#P org.eclipse.e4.ui.workbench.renderers.swt >Index: src/org/eclipse/e4/workbench/ui/renderers/swt/LazyStackRenderer.java >=================================================================== >RCS file: /cvsroot/eclipse/e4/org.eclipse.e4.ui/bundles/org.eclipse.e4.ui.workbench.renderers.swt/src/org/eclipse/e4/workbench/ui/renderers/swt/LazyStackRenderer.java,v >retrieving revision 1.20 >diff -u -r1.20 LazyStackRenderer.java >--- src/org/eclipse/e4/workbench/ui/renderers/swt/LazyStackRenderer.java 7 Mar 2010 21:43:44 -0000 1.20 >+++ src/org/eclipse/e4/workbench/ui/renderers/swt/LazyStackRenderer.java 30 Mar 2010 18:47:50 -0000 >@@ -10,14 +10,11 @@ > *******************************************************************************/ > package org.eclipse.e4.workbench.ui.renderers.swt; > >-import org.eclipse.e4.core.services.events.IEventBroker; >- > import java.util.ArrayList; > import java.util.List; >+import org.eclipse.e4.core.services.events.IEventBroker; > import org.eclipse.e4.ui.model.application.MElementContainer; > import org.eclipse.e4.ui.model.application.MGenericStack; >-import org.eclipse.e4.ui.model.application.MPart; >-import org.eclipse.e4.ui.model.application.MPartStack; > import org.eclipse.e4.ui.model.application.MPlaceholder; > import org.eclipse.e4.ui.model.application.MUIElement; > import org.eclipse.e4.ui.model.application.MWindow; >@@ -130,34 +127,6 @@ > protected void createTab(MElementContainer<MUIElement> me, MUIElement part) { > } > >- @Override >- public void hookControllerLogic(final MUIElement me) { >- super.hookControllerLogic(me); >- >- if (!(me instanceof MPartStack)) >- return; >- >- final MPartStack sm = (MPartStack) me; >- >- // Detect activation...picks up cases where the user clicks on the >- // (already active) part >- if (sm.getWidget() instanceof Control) { >- Control ctrl = (Control) sm.getWidget(); >- ctrl.addListener(SWT.Activate, >- new org.eclipse.swt.widgets.Listener() { >- public void handleEvent( >- org.eclipse.swt.widgets.Event event) { >- CTabFolder ctf = (CTabFolder) event.widget; >- MPartStack stack = (MPartStack) ctf >- .getData(OWNING_ME); >- MPart selPart = stack.getSelectedElement(); >- if (selPart != null) >- activate(selPart); >- } >- }); >- } >- } >- > protected void showTab(MUIElement element) { > // Now process any newly visible elements > List<MUIElement> becomingVisible = new ArrayList<MUIElement>(); >Index: src/org/eclipse/e4/workbench/ui/renderers/swt/StackRenderer.java >=================================================================== >RCS file: /cvsroot/eclipse/e4/org.eclipse.e4.ui/bundles/org.eclipse.e4.ui.workbench.renderers.swt/src/org/eclipse/e4/workbench/ui/renderers/swt/StackRenderer.java,v >retrieving revision 1.50 >diff -u -r1.50 StackRenderer.java >--- src/org/eclipse/e4/workbench/ui/renderers/swt/StackRenderer.java 18 Mar 2010 19:46:25 -0000 1.50 >+++ src/org/eclipse/e4/workbench/ui/renderers/swt/StackRenderer.java 30 Mar 2010 18:47:50 -0000 >@@ -76,6 +76,34 @@ > > private boolean ignoreTabSelChanges = false; > >+ private class ActivationJob implements Runnable { >+ public MElementContainer<MUIElement> stackToActivate = null; >+ >+ public void run() { >+ activationJob = null; >+ if (stackToActivate != null >+ && stackToActivate.getSelectedElement() != null) { >+ activate((MPart) stackToActivate.getSelectedElement()); >+ } >+ } >+ } >+ >+ private ActivationJob activationJob = null; >+ >+ synchronized private void activateStack(MElementContainer<MUIElement> stack) { >+ CTabFolder ctf = (CTabFolder) stack.getWidget(); >+ if (ctf == null || ctf.isDisposed()) >+ return; >+ >+ if (activationJob == null) { >+ activationJob = new ActivationJob(); >+ activationJob.stackToActivate = stack; >+ ctf.getDisplay().asyncExec(activationJob); >+ } else { >+ activationJob.stackToActivate = stack; >+ } >+ } >+ > public StackRenderer() { > super(); > } >@@ -400,11 +428,8 @@ > return; > > MPart newPart = (MPart) e.item.getData(OWNING_ME); >- if (stack.getSelectedElement() != newPart) { >- activate(newPart); >- } >- >- showTab(newPart); >+ newPart.getParent().setSelectedElement(newPart); >+ activateStack(stack); > } > }); > >@@ -432,10 +457,9 @@ > ctf.addListener(SWT.Activate, new org.eclipse.swt.widgets.Listener() { > public void handleEvent(org.eclipse.swt.widgets.Event event) { > CTabFolder ctf = (CTabFolder) event.widget; >- MPartStack stack = (MPartStack) ctf.getData(OWNING_ME); >- MPart part = stack.getSelectedElement(); >- if (part != null) >- activate(part); >+ MElementContainer<MUIElement> stack = (MElementContainer<MUIElement>) ctf >+ .getData(OWNING_ME); >+ activateStack(stack); > } > }); > }
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 307199
: 163443