discuss-gnustep
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

comboboxes: the saga continues


From: Marko Riedel
Subject: comboboxes: the saga continues
Date: Wed, 19 Mar 2003 15:06:15 +0100 (CET)

Hi folks,

I was able to capture a weird combobox behaviour by making some
trivial modifications to nscombobox.app from the examples. I add a
third combobox to the window and it does not show its entries,
although judging by the size of the popup it seems to know how many
entries there are.

Is this a bug or a feature? What did I miss?

This is my setup:

Mar 18 13:00 gnustep-back-0.8.4
Mar 18 12:51 gnustep-base-1.6.0
Jun 29  2002 gnustep-examples-0.9.7
Mar 19 14:46 gnustep-gui-0.8.4
Aug 29  2002 gnustep-make-1.4.0
Feb 17 15:10 gnustep-objc-1.2.2


The code is at the end of this message.

Best regards,

-- 
+------------------------------------------------------------+
| Marko Riedel, EDV Neue Arbeit gGmbH, mriedel@neuearbeit.de |
| http://www.geocities.com/markoriedelde/index.html          |
+------------------------------------------------------------+


/*
   nscombobox.m

   Copyright (C) 1999 Free Software Foundation, Inc.

   Author: Gerrit van Dyk <gerritvd@decillion.net>
   Date: September 1999
   
   This file is part of the GNUstep GUI Library.

   This library is free software; you can redistribute it and/or
   modify it under the terms of the GNU Library General Public
   License as published by the Free Software Foundation; either
   version 2 of the License, or (at your option) any later version.
   
   This library is distributed in the hope that it will be useful,
   but WITHOUT ANY WARRANTY; without even the implied warranty of
   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
   Library General Public License for more details.

   You should have received a copy of the GNU Library General Public
   License along with this library; if not, write to the Free
   Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
*/

#import <Foundation/NSAutoreleasePool.h>
#import <AppKit/AppKit.h>

@interface MyObject : NSObject
{
   NSComboBox   *sourceCombo,*staticCombo;
   NSArray      *sourceArray;
}

- (id)initWithSourceCombo:(NSComboBox *)aSource
              staticCombo:(NSComboBox *)aStatic;

@end

int
main(int argc, char **argv, char** env)
{
  NSApplication *theApp;
  NSWindow* window;
  NSComboBox    *sourceCombo,*staticCombo;
  NSMenu        *menu;
  MyObject      *trigger;
  NSRect winRect = {{100, 100}, {300, 200}};
  NSRect sourceComboRect = {{40,60},{150,20}};
  NSRect staticComboRect = {{40,90},{200,20}};
  NSAutoreleasePool* pool;
  id target;

#if LIB_FOUNDATION_LIBRARY
  [NSProcessInfo initializeWithArguments:argv count:argc environment:env];
#endif

  pool = [NSAutoreleasePool new];

  theApp = [NSApplication sharedApplication];

#if 0
  window = [[NSWindow alloc]
              initWithContentRect:winRect
              styleMask:style
              backing:NSBackingStoreNonretained
              defer:NO];
#else
  window = [[NSWindow alloc] init];
#endif

  [window setFrame:winRect display:YES];

  target = [[MyObject new] autorelease];

  sourceCombo = [[[NSComboBox alloc] initWithFrame:sourceComboRect]
                   autorelease];
  staticCombo = [[[NSComboBox alloc] initWithFrame:staticComboRect]
                   autorelease];
  [[window contentView] addSubview:sourceCombo];
  [[window contentView] addSubview:staticCombo];
  trigger = [[MyObject alloc] initWithSourceCombo:sourceCombo
                              staticCombo:staticCombo];

  { NSComboBox *extr;

  extr = [[NSComboBox alloc] 
           initWithFrame:NSMakeRect(40, 120, 120,20)];

  [extr addItemsWithObjectValues:
          [NSArray arrayWithObjects:@"un", @"deux", @"trois", @"quatre", nil]];
  
  [[window contentView] addSubview:extr];
  }


  menu = [NSMenu new];
  [menu addItemWithTitle:@"Quit the Test" action: @selector(terminate:)
        keyEquivalent: @"q"];

  [theApp setMainMenu:menu];
  [menu setTitle:@"Test"];
  [menu update];
  [menu display];
  
  [window orderFrontRegardless];

  [theApp run];
  [trigger release];
  [pool release];
  return 0;
}

@implementation MyObject : NSObject

- (id)initWithSourceCombo:(NSComboBox *)aSource
              staticCombo:(NSComboBox *)aStatic
{
   self = [self init];
   sourceCombo = [aSource retain];
   staticCombo = [aStatic retain];
   [sourceCombo setUsesDataSource:YES];
   [sourceCombo setDataSource:self];
   sourceArray = [[NSArray arrayWithObjects:
                              @"One",@"Two",@"Three",@"Four",nil] retain];
   [staticCombo addItemsWithObjectValues:
                   [NSArray arrayWithObjects:@"Dog",@"Cat",@"Beast",nil]];
   return self;
}

- (void)dealloc
{
   [sourceCombo release];
   [staticCombo release];
   [sourceArray release];
   [super dealloc];
}

- (int)numberOfItemsInComboBox:(NSComboBox *)aComboBox
{
   return [sourceArray count];
}

- (id)comboBox:(NSComboBox *)aComboBox objectValueForItemAtIndex:(int)index
{
   return [sourceArray objectAtIndex:index];
}

- (unsigned int)comboBox:(NSComboBox *)aComboBox
indexOfItemWithStringValue:(NSString *)string
{
   return [sourceArray indexOfObject:string];
}

@end




reply via email to

[Prev in Thread] Current Thread [Next in Thread]