Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Setting Position of NSWindow before Display

Tags:

cocoa

Right now I'm setting the position of a window that is about to open like this:

-(void) setActiveNodeDialog:(ISKNodeDialogController *)dialog
{
    if (activeNodeDialog)
        [[activeNodeDialog window] close];
    activeNodeDialog = dialog;
    if (activeNodeDialog) {
        [activeNodeDialog setMainWindowController:self];
        NSRect windowRect = [[self window] frame];
        NSRect dialogRect = [[activeNodeDialog window] frame];
        NSPoint pos;
        pos.x = windowRect.origin.x + windowRect.size.width - dialogRect.size.width - 10;
        pos.y = windowRect.origin.y + 32;
        [[activeNodeDialog window] setFrameOrigin:pos];
        [[activeNodeDialog window] makeKeyAndOrderFront:nil];
    }
}

The problem with that is, that the window will "jump" when shown. And that even though I set the position before showing the window with "makeKeyAndOrderFront". The window is a NSPanel *. Anyone any ideas how to fix the jumping?

Setting the position in awakeFromNib is not an option because the main controller is set later.

like image 938
Armin Ronacher Avatar asked May 22 '10 19:05

Armin Ronacher


1 Answers

In Interface Builder, is "visible at launch" checked for the window? If so uncheck it and then you won't even need this code [[activeNodeDialog window] close];. Basically if that is checked then the window is automatically shown when the xib is instantiated... which you don't want.

like image 167
regulus6633 Avatar answered Oct 19 '22 05:10

regulus6633