+#import <AppKit/NSCell.h>
+
+// ============================================================================
+// @class wxCocoaListBoxNSTableDataSource
+// ============================================================================
+// 2.8 hack: We can't add an i-var to wxListBox so we add one here
+@interface wxCocoaListBoxNSTableDataSource : wxCocoaNSTableDataSource
+{
+ BOOL m_needsUpdate;
+}
+
+@end
+WX_DECLARE_GET_OBJC_CLASS(wxCocoaListBoxNSTableDataSource,wxCocoaNSTableDataSource)
+
+@implementation wxCocoaListBoxNSTableDataSource
+// No methods
+@end
+WX_IMPLEMENT_GET_OBJC_CLASS_WITH_UNIQUIFIED_SUPERCLASS(wxCocoaListBoxNSTableDataSource,wxCocoaNSTableDataSource)
+
+
+// ============================================================================
+// helper functions
+// ============================================================================
+
+static CGFloat _TableColumnMaxWidthForItems(NSTableColumn *tableColumn, NSArray *items)
+{
+ wxAutoNSAutoreleasePool pool;
+
+ NSCell *dataCell = [[[tableColumn dataCell] copy] autorelease];
+ CGFloat width = 0.0f;
+ NSEnumerator *itemEnum = [items objectEnumerator];
+ NSString *item;
+ while( (item = [itemEnum nextObject]) != nil )
+ {
+ [dataCell setStringValue: item];
+ NSSize itemSize = [dataCell cellSize];
+ CGFloat itemWidth = itemSize.width;
+ if(itemWidth > width)
+ width = itemWidth;
+ }
+ return width;
+}
+
+static void _SetWidthOfTableColumnToFitItems(NSTableColumn *tableColumn, NSArray *items)
+{
+ CGFloat width = _TableColumnMaxWidthForItems(tableColumn, items);
+ [tableColumn setWidth:width];
+ [tableColumn setMinWidth:width];
+}
+
+// ============================================================================
+// class wxListBox
+// ============================================================================