diff --git a/IJInventoryItem.m b/IJInventoryItem.m
index bf51639..c04f046 100644
--- a/IJInventoryItem.m
+++ b/IJInventoryItem.m
@@ -63,7 +63,7 @@
NSUInteger pixelsPerColumn = 36;
NSUInteger pixelsPerRow = 56;
- int index;
+ int index = 0;
if (itemId <= 85)
{
@@ -115,7 +115,7 @@
[NSGraphicsContext restoreGraphicsState];
- return output;
+ return [output autorelease];
}
- (NSImage *)image
diff --git a/IJInventoryView.m b/IJInventoryView.m
index 17e0b59..66348e4 100644
--- a/IJInventoryView.m
+++ b/IJInventoryView.m
@@ -206,7 +206,6 @@ const static CGFloat cellOffset = 40;
- (void)mouseUp:(NSEvent *)theEvent
{
- NSLog(@"%s", __PRETTY_FUNCTION__);
if (!dragging)
{
NSPoint mouseDownPoint = [mouseDownEvent locationInWindow];
diff --git a/IJInventoryWindowController.m b/IJInventoryWindowController.m
index 4118399..14e934d 100644
--- a/IJInventoryWindowController.m
+++ b/IJInventoryWindowController.m
@@ -292,6 +292,7 @@
- (void)inventoryView:(IJInventoryView *)theInventoryView selectedItemAtIndex:(int)itemIndex
{
+ NSLog(@"%s index=%d", _cmd, itemIndex);
// Show the properties window for this item.
IJInventoryItem *lastItem = propertiesViewController.item;
@@ -305,31 +306,39 @@
NSArray *items = [self itemArrayForInventoryView:theInventoryView slotOffset:nil];
IJInventoryItem *item = [items objectAtIndex:itemIndex];
if (item.itemId == 0 || lastItem == item)
+ {
+ propertiesViewController.item = nil;
return; // can't show info on nothing
+ }
if (!propertiesViewController)
{
propertiesViewController = [[IJItemPropertiesViewController alloc] initWithNibName:@"ItemPropertiesView" bundle:nil];
+
+ propertiesWindow = [[MAAttachedWindow alloc] initWithView:propertiesViewController.view
+ attachedToPoint:point
+ inWindow:self.window
+ onSide:MAPositionRight
+ atDistance:0];
+ [propertiesWindow setBackgroundColor:[NSColor controlBackgroundColor]];
+ [propertiesWindow setViewMargin:10.0];
+ [propertiesWindow setAlphaValue:1.0];
+ [[self window] addChildWindow:propertiesWindow ordered:NSWindowAbove];
}
- propertiesViewController.item = item;
- propertiesWindow = [[MAAttachedWindow alloc] initWithView:propertiesViewController.view
- attachedToPoint:point
- inWindow:self.window
- onSide:MAPositionRight
- atDistance:0];
- [propertiesWindow setDelegate:propertiesViewController]; // Be the delegate so it can be part of the responder chain (to get cancelOperation:).
- [propertiesWindow setBackgroundColor:[NSColor controlBackgroundColor]];
- [propertiesWindow setViewMargin:10.0];
- [propertiesWindow setAlphaValue:1.0];
- [[self window] addChildWindow:propertiesWindow ordered:NSWindowAbove];
- [propertiesWindow makeKeyAndOrderFront:nil];
-
+ if (observerObject)
+ [[NSNotificationCenter defaultCenter] removeObserver:observerObject];
observerObject = [[NSNotificationCenter defaultCenter] addObserverForName:NSWindowDidResignKeyNotification
object:propertiesWindow
queue:[NSOperationQueue mainQueue]
usingBlock:^(NSNotification *notification) {
- [self removePropertiesWindow];
+ [propertiesViewController commitEditing];
+ [theInventoryView reloadItemAtIndex:itemIndex];
+ [propertiesWindow setAlphaValue:0.0];
}];
+ propertiesViewController.item = item;
+ [propertiesWindow setPoint:point side:MAPositionRight];
+ [propertiesWindow makeKeyAndOrderFront:nil];
+ [propertiesWindow setAlphaValue:1.0];
}
#pragma mark -
diff --git a/IJItemPropertiesViewController.m b/IJItemPropertiesViewController.m
index 3fe79e3..86a3136 100644
--- a/IJItemPropertiesViewController.m
+++ b/IJItemPropertiesViewController.m
@@ -13,10 +13,4 @@
@synthesize item;
-- (void)cancelOperation:(id)sender
-{
- // Somewhat hacky method of closing the window on Esc. Depends on us being the window's delegate.
- [self.view.window orderOut:nil];
-}
-
@end
diff --git a/ItemPropertiesView.xib b/ItemPropertiesView.xib
index a119e70..3f88ed0 100644
--- a/ItemPropertiesView.xib
+++ b/ItemPropertiesView.xib
@@ -43,21 +43,21 @@
268