]> err.no Git - sope/commitdiff
fixed a bug in selection management
authorhelge <helge@e4a50df8-12e2-0310-a44c-efbce7f8a7e3>
Tue, 27 Sep 2005 12:31:31 +0000 (12:31 +0000)
committerhelge <helge@e4a50df8-12e2-0310-a44c-efbce7f8a7e3>
Tue, 27 Sep 2005 12:31:31 +0000 (12:31 +0000)
git-svn-id: http://svn.opengroupware.org/SOPE/trunk@1130 e4a50df8-12e2-0310-a44c-efbce7f8a7e3

sope-appserver/NGObjWeb/ChangeLog
sope-appserver/NGObjWeb/DynamicElements/WOPopUpButton.m
sope-appserver/NGObjWeb/Version

index 842a98b46f12ef6672e0dd9bb7861c332a6e5055..de2a8e7d0bec332e3df78afdb4820d513e287fda 100644 (file)
@@ -1,3 +1,10 @@
+2005-09-27  Helge Hess  <helge.hess@skyrix.com>
+
+       * DynamicElements/WOPopUpButton.m: fixed a bug in the 'selection' which
+         occurred when the element is being used with the 'value' binding
+         (returned the last item instead of nil for 'noSelectionString')
+         (v4.5.202)
+
 2005-09-18  Helge Hess  <helge.hess@opengroupware.org>
 
        * GNUmakefile.preamble: added missing linking path to NGMail (required
index 99ee76aebb10af56f44fe48f7c1a2323f29df264..3c9127f7e4a3eb9ee760f4a4bbea380a0e3b1ab3 100644 (file)
@@ -66,6 +66,7 @@ static Class NSDateClass = Nil;
 @implementation WOPopUpButton
 
 static NSNumber *yesNum = nil;
+static BOOL debugPopUp = NO;
 
 + (int)version {
   return [super version] + 0 /* v2 */;
@@ -172,12 +173,14 @@ static NSNumber *yesNum = nil;
     return;
   
   formValue = [_rq formValueForKey:OWFormElementName(self, _ctx)];
-#if 0
-  [self logWithFormat:@"%@: value=%@ ..", [self elementID], formValue];
-#endif
-    
+  if (debugPopUp) {
+    [self logWithFormat:@"%@ / %@: value=%@ ..", OWFormElementName(self, _ctx),
+          [_ctx elementID], formValue];
+  }
+  
   if (formValue == nil) {
     /* nothing changed, or not in submitted form */
+    if (debugPopUp) [self logWithFormat:@"found no form value!"];
     return;
   }
       
@@ -187,7 +190,9 @@ static NSNumber *yesNum = nil;
   if (self->value != nil) {
     /* has a value binding, walk list to find object */
     unsigned i, toGo;
-
+    
+    if (debugPopUp) [self logWithFormat:@"scan value: %@", self->value];
+    
     for (i = 0, toGo = [objects count]; i < toGo; i++) {
       NSString *cv;
           
@@ -200,6 +205,9 @@ static NSNumber *yesNum = nil;
           
       if ([cv isEqualToString:formValue])
        break;
+      
+      // important, reset object otherwise the last item will be preselected!
+      object = nil;
     }
   }
   else if (![formValue isEqualToString:WONoSelectionString]) {
@@ -224,7 +232,7 @@ static NSNumber *yesNum = nil;
   if ([self->selection isValueSettable]) {
     NSArray *sel;
         
-    if (object) {
+    if (object != nil) {
       sel = [object retain];
     }
     else /* nil item selected */
index 9a8640a1d522ad20d643492faef1efad97c9ebc8..e7507cedda707806981abb120a9807dfc355a3eb 100644 (file)
@@ -1,6 +1,6 @@
 # version file
 
-SUBMINOR_VERSION:=201
+SUBMINOR_VERSION:=202
 
 # v4.5.122 requires libNGExtensions v4.5.153
 # v4.5.91  requires libNGExtensions v4.5.134