From c068883ed85e4d0cef027439c47d692ff4358749 Mon Sep 17 00:00:00 2001 From: Johann Werner Date: Wed, 5 Feb 2014 14:39:40 +0100 Subject: [PATCH] setSelectedObjects did not call setSelectionIndexes --- .../extensions/appserver/ERXDisplayGroup.java | 19 +++++++++++++++---- 1 file changed, 15 insertions(+), 4 deletions(-) diff --git a/Frameworks/Core/ERExtensions/Sources/er/extensions/appserver/ERXDisplayGroup.java b/Frameworks/Core/ERExtensions/Sources/er/extensions/appserver/ERXDisplayGroup.java index f61a9050612..7bf3b877fa5 100644 --- a/Frameworks/Core/ERExtensions/Sources/er/extensions/appserver/ERXDisplayGroup.java +++ b/Frameworks/Core/ERExtensions/Sources/er/extensions/appserver/ERXDisplayGroup.java @@ -17,7 +17,9 @@ import com.webobjects.foundation.NSMutableDictionary; import com.webobjects.foundation.NSMutableSet; import com.webobjects.foundation.NSSet; +import com.webobjects.foundation._NSArrayUtilities; +import er.extensions.batching.ERXBatchingDisplayGroup; import er.extensions.eof.ERXEOAccessUtilities; import er.extensions.eof.ERXS; @@ -97,7 +99,7 @@ public void setQualifierForKey(EOQualifier qualifier, String key) { } /** - * Will return the qualifer set by "setQualifierForKey()" if it exists. Null returns otherwise. + * Will return the qualifier set by "setQualifierForKey()" if it exists. Null returns otherwise. * @param key * @return */ @@ -189,11 +191,20 @@ public NSArray selectedObjects() { } @Override - public void setSelectedObjects(NSArray nsarray) { + public void setSelectedObjects(NSArray objects) { if(log.isDebugEnabled()) { - log.debug("setSelectedObjects@" + hashCode() + ":" + (nsarray != null ? nsarray.count() : "0")); + log.debug("setSelectedObjects@" + hashCode() + ":" + (objects != null ? objects.count() : "0")); + } + if (this instanceof ERXBatchingDisplayGroup) { + // keep previous behavior + // CHECKME a batching display group has its own _displayedObjects variable so setSelectionIndexes won't work + super.setSelectedObjects(objects); + } else { + // jw: don't call super as it does not call setSelectionIndexes as advertised in its + // javadocs and thus doesn't invoke events on the delegate + NSArray newSelection = _NSArrayUtilities.indexesForObjectsIndenticalTo(displayedObjects(), objects); + setSelectionIndexes(newSelection); } - super.setSelectedObjects(nsarray); } @Override