I present a NSPanel in a NSWindowController. When I press the little red button of the titlebar of the NSPanel I would like to change the way it disappears with a different animation. How do I do that? Is there something like -(void)closeButtonPressed that I can change. Because the -(void)close of the NSWindow is not working like I want it. When I present it I do it like this:
[self.imagePanelController.previewPanel setFrame:NSRectFromCGRect(CGRectMake(self.window.frame.origin.x + self.window.frame.size.width/4 , self.window.frame.origin.y + self.bounds.size.height/4, self.ciImage.extent.size.width, self.ciImage.extent.size.height)) display:YES animate:YES];
I would like to set a new frame again and animate that, when pressing the panel close button. Any ideas?
So I figured it out myself, and it works for me, I don't know if that is the best solution, but does exactly what I needed. So I just post this, if someone is looking for something similar.
I am getting the closeButton of the NSPanel and perform than a action on it to close the panel exactly in the way it animated to open the panel.
NSButton *closeButton = [self.imagePanelController.previewPanel standardWindowButton:NSWindowCloseButton];
[closeButton setTarget:self];
[closeButton setAction:@selector(closePanel)];
- (void)closePanel
{
int calcX = self.window.frame.size.width - self.bounds.size.width;
int x = self.window.frame.origin.x + calcX;
int y = self.window.frame.origin.y;
int width = self.bounds.size.width;
int height = self.bounds.size.height;
[self.imagePanelController.previewPanel setFrame:NSRectFromCGRect(CGRectMake(x, y, width, height)) display:YES animate:YES];
[self.imagePanelController.previewPanel close];
}