Search code examples
objective-cmacoscocoanspanel

Why my NSPanel doesn't have background of gray color as normal?


My app has an icon in the menubar. A NSPanel shows up when I click the icon. But why does the NSPanel not have a background color like other having gray background NSWindow? My NSPanel's background looks like transparent. My NSPanel comes from a .xib file. My code as follows:

(void)openPanel
{

NSLog(@"openPanel");

NSWindow *panel = self.panelController.window;

NSRect rect = [[[NSApp currentEvent] window] frame];
NSLog(@"rect.origin.x = %f",rect.origin.x);
NSLog(@"rect.origin.y = %f",rect.origin.y);
NSLog(@"rect.size.width = %f",rect.size.width);
NSLog(@"rect.size.height = %f",rect.size.height);
[panel setFrame:NSMakeRect(rect.origin.x, rect.origin.y-100, 200, 100) display:YES];
[NSApp activateIgnoringOtherApps:NO];
[panel makeKeyAndOrderFront:nil];

isPanelVisible = YES;
}

Solution

  • Generally NSPanels are semi-transparent. See here for more information. If you don't want the semi-transparency you could change NSPanel in IB under custom class from NSPanel to NSWindow.