From eccdb55165c9c820ea0cc65a700bc1f1c8682c8c Mon Sep 17 00:00:00 2001 From: Stefan Csomor Date: Wed, 25 Jan 2012 10:33:26 +0000 Subject: [PATCH] structure code to Cocoa's possibilities, allows tool windows with just a caption and no buttons git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@70464 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775 --- src/osx/cocoa/nonownedwnd.mm | 67 +++++++++++------------------------- 1 file changed, 20 insertions(+), 47 deletions(-) diff --git a/src/osx/cocoa/nonownedwnd.mm b/src/osx/cocoa/nonownedwnd.mm index 31c0bad0cb..229e744230 100644 --- a/src/osx/cocoa/nonownedwnd.mm +++ b/src/osx/cocoa/nonownedwnd.mm @@ -532,30 +532,10 @@ long style, long extraStyle, const wxString& WXUNUSED(name) ) if ( style & wxFRAME_TOOL_WINDOW ) { windowstyle |= NSUtilityWindowMask; - if ( ( style & wxMINIMIZE_BOX ) || ( style & wxMAXIMIZE_BOX ) || - ( style & wxCLOSE_BOX ) || ( style & wxSYSTEM_MENU ) ) - { - windowstyle |= NSTitledWindowMask ; - } } else if ( ( style & wxPOPUP_WINDOW ) ) { level = kCGPopUpMenuWindowLevel; - /* - if ( ( style & wxBORDER_NONE ) ) - { - wclass = kHelpWindowClass ; // has no border - attr |= kWindowNoShadowAttribute; - } - else - { - wclass = kPlainWindowClass ; // has a single line border, it will have to do for now - } - */ - } - else if ( ( style & wxCAPTION ) ) - { - windowstyle |= NSTitledWindowMask ; } else if ( ( style & wxFRAME_DRAWER ) ) { @@ -563,40 +543,24 @@ long style, long extraStyle, const wxString& WXUNUSED(name) ) wclass = kDrawerWindowClass; */ } - else - { - // set these even if we have no title, otherwise the controls won't be visible - if ( ( style & wxMINIMIZE_BOX ) || ( style & wxMAXIMIZE_BOX ) || - ( style & wxCLOSE_BOX ) || ( style & wxSYSTEM_MENU ) ) - { - windowstyle |= NSTitledWindowMask ; - } - /* - else if ( ( style & wxNO_BORDER ) ) - { - wclass = kSimpleWindowClass ; - } - else - { - wclass = kPlainWindowClass ; - } - */ - } - - if ( windowstyle & NSTitledWindowMask ) + + if ( ( style & wxMINIMIZE_BOX ) || ( style & wxMAXIMIZE_BOX ) || + ( style & wxCLOSE_BOX ) || ( style & wxSYSTEM_MENU ) || ( style & wxCAPTION ) ) { + windowstyle |= NSTitledWindowMask ; if ( ( style & wxMINIMIZE_BOX ) ) windowstyle |= NSMiniaturizableWindowMask ; - + if ( ( style & wxMAXIMIZE_BOX ) ) - windowstyle |= NSResizableWindowMask ; // TODO showing ZOOM ? - - if ( ( style & wxRESIZE_BORDER ) ) windowstyle |= NSResizableWindowMask ; - + if ( ( style & wxCLOSE_BOX) ) windowstyle |= NSClosableWindowMask ; } + + if ( ( style & wxRESIZE_BORDER ) ) + windowstyle |= NSResizableWindowMask ; + if ( extraStyle & wxFRAME_EX_METAL) windowstyle |= NSTexturedBackgroundWindowMask; @@ -615,7 +579,16 @@ long style, long extraStyle, const wxString& WXUNUSED(name) ) backing:NSBackingStoreBuffered defer:NO ]; - + + // if we just have a title bar with no buttons needed, hide them + if ( (windowstyle & NSTitledWindowMask) && + !(style & wxCLOSE_BOX) && !(style & wxMAXIMIZE_BOX) && !(style & wxMINIMIZE_BOX) ) + { + [[m_macWindow standardWindowButton:NSWindowZoomButton] setHidden:YES]; + [[m_macWindow standardWindowButton:NSWindowCloseButton] setHidden:YES]; + [[m_macWindow standardWindowButton:NSWindowMiniaturizeButton] setHidden:YES]; + } + // If the parent is modal, windows with wxFRAME_FLOAT_ON_PARENT style need // to be in kCGUtilityWindowLevel and not kCGFloatingWindowLevel to stay // above the parent. -- 2.47.2