Skip to content

Commit 8af2092

Browse files
raghucssitiloveeclipse
authored andcommitted
Do not inform listeners about selection on ExpandableNode
Fixes #1027
1 parent 6d0d4e6 commit 8af2092

File tree

2 files changed

+14
-0
lines changed

2 files changed

+14
-0
lines changed

bundles/org.eclipse.jface/src/org/eclipse/jface/viewers/StructuredViewer.java

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -33,6 +33,7 @@
3333
import org.eclipse.jface.util.OpenStrategy;
3434
import org.eclipse.jface.util.Policy;
3535
import org.eclipse.jface.util.SafeRunnable;
36+
import org.eclipse.jface.viewers.internal.ExpandableNode;
3637
import org.eclipse.swt.SWT;
3738
import org.eclipse.swt.dnd.DragSource;
3839
import org.eclipse.swt.dnd.DragSourceListener;
@@ -814,6 +815,11 @@ public void run() {
814815
* @see #addPostSelectionChangedListener(ISelectionChangedListener)
815816
*/
816817
protected void firePostSelectionChanged(final SelectionChangedEvent event) {
818+
// do not inform client listeners on ExpandableNode selection
819+
if (event.getSelection() instanceof StructuredSelection sel
820+
&& sel.getFirstElement() instanceof ExpandableNode) {
821+
return;
822+
}
817823
for (ISelectionChangedListener l : postSelectionChangedListeners) {
818824
SafeRunnable.run(new SafeRunnable() {
819825
@Override

bundles/org.eclipse.jface/src/org/eclipse/jface/viewers/Viewer.java

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -17,6 +17,7 @@
1717
import org.eclipse.core.runtime.Assert;
1818
import org.eclipse.core.runtime.ListenerList;
1919
import org.eclipse.jface.util.SafeRunnable;
20+
import org.eclipse.jface.viewers.internal.ExpandableNode;
2021
import org.eclipse.swt.events.HelpEvent;
2122
import org.eclipse.swt.events.HelpListener;
2223
import org.eclipse.swt.widgets.Control;
@@ -144,6 +145,13 @@ protected void fireHelpRequested(HelpEvent event) {
144145
* @see ISelectionChangedListener#selectionChanged
145146
*/
146147
protected void fireSelectionChanged(final SelectionChangedEvent event) {
148+
149+
// do not inform client listeners on ExpandableNode selection
150+
if (event.getSelection() instanceof StructuredSelection sel
151+
&& sel.getFirstElement() instanceof ExpandableNode) {
152+
return;
153+
}
154+
147155
for (ISelectionChangedListener l : selectionChangedListeners) {
148156
SafeRunnable.run(new SafeRunnable() {
149157
@Override

0 commit comments

Comments
 (0)