Added a debug log to investigate #8685, as it worksforme. Refs #8685
[adiumx.git] / Other / XtrasCreator / NSMenu+ImmediatePopulation.m
blob8be9405eb7096f24525aec2dbe12a0b728bf92ed
1 //
2 //  NSMenu+ImmediatePopulation.m
3 //  XtrasCreator
4 //
5 //  Created by Mac-arena the Bored Zo on 2005-11-08.
6 //  Copyright 2005 Adium Team. All rights reserved.
7 //
9 #import "NSMenu+ImmediatePopulation.h"
11 @implementation NSMenu (ImmediatePopulation)
13 - (void) populateFromDelegate
15         id delegate = [self delegate];
17         signed newCount = [delegate numberOfItemsInMenu:self];
18         if (newCount < 0)
19                 return;
21         int existingCount = [self numberOfItems];
22         if (existingCount > newCount) {
23                 //remove some items.
24                 while (existingCount-- > newCount)
25                         [self removeItemAtIndex:existingCount];
26         } else {
27                 //add some items.
28                 while (existingCount++ < newCount) {
29                         NSMenuItem *item = [[NSMenuItem alloc] init];
30                         [self addItem:item];
31                         [item release];
32                 }
33         }
35         for (int i = 0; i < newCount; ++i) {
36                 NSMenuItem *item = [self itemAtIndex:i];
37                 BOOL keepGoing = [delegate menu:self
38                                                          updateItem:item
39                                                                 atIndex:i
40                                                    shouldCancel:NO];
41                 if (!keepGoing)
42                         break;
43         }
46 @end