Implement wxTopLevelWindow::EnableCloseButton() for wxOSX

Just forward this wx method to Cocoa standardWindowButton:NSWindowCloseButton.

See #17133
This commit is contained in:
John Roberts
2015-09-06 14:12:16 +02:00
committed by Vadim Zeitlin
parent 8d6a2b3921
commit 6055d8d0a5
7 changed files with 26 additions and 2 deletions

View File

@@ -173,6 +173,7 @@ wxOSX/Cocoa:
- Use more efficient FSEvents (10.7+) in wxFileSystemWatcher (Roberto Perpuly). - Use more efficient FSEvents (10.7+) in wxFileSystemWatcher (Roberto Perpuly).
- Implement wxWindow::Disable() for non-native controls too (Steve Browne). - Implement wxWindow::Disable() for non-native controls too (Steve Browne).
- Implement wxTopLevelWindow::EnableCloseButton() (John Roberts).
- Fix wxEVT_CHAR for non-BMP Unicode characters (ARATA Mizuki). - Fix wxEVT_CHAR for non-BMP Unicode characters (ARATA Mizuki).
- Add support for wxEVT_COMBOBOX_DROPDOWN and wxEVT_COMBOBOX_CLOSEUP - Add support for wxEVT_COMBOBOX_DROPDOWN and wxEVT_COMBOBOX_CLOSEUP
events (Igor Korot). events (Igor Korot).

View File

@@ -231,6 +231,8 @@ public :
virtual void SetTitle( const wxString& title, wxFontEncoding encoding ) ; virtual void SetTitle( const wxString& title, wxFontEncoding encoding ) ;
virtual bool EnableCloseButton(bool enable) wxOVERRIDE;
virtual bool IsMaximized() const; virtual bool IsMaximized() const;
virtual bool IsIconized() const; virtual bool IsIconized() const;

View File

@@ -847,6 +847,8 @@ public :
virtual void SetTitle( const wxString& title, wxFontEncoding encoding ) = 0; virtual void SetTitle( const wxString& title, wxFontEncoding encoding ) = 0;
virtual bool EnableCloseButton(bool enable) = 0;
virtual bool IsMaximized() const = 0; virtual bool IsMaximized() const = 0;
virtual bool IsIconized() const= 0; virtual bool IsIconized() const= 0;

View File

@@ -74,6 +74,10 @@ public:
virtual void SetTitle( const wxString& title); virtual void SetTitle( const wxString& title);
virtual wxString GetTitle() const; virtual wxString GetTitle() const;
// EnableCloseButton(false) used to disable the "Close"
// button on the title bar
virtual bool EnableCloseButton(bool enable = true) wxOVERRIDE;
virtual void SetLabel(const wxString& label) { SetTitle( label ); } virtual void SetLabel(const wxString& label) { SetTitle( label ); }
virtual wxString GetLabel() const { return GetTitle(); } virtual wxString GetLabel() const { return GetTitle(); }

View File

@@ -142,8 +142,6 @@ public:
corner of a dialog) and the Close entry of the system menu (most often corner of a dialog) and the Close entry of the system menu (most often
in the left upper corner of the dialog). in the left upper corner of the dialog).
Currently only implemented for wxMSW and wxGTK.
Returns @true if operation was successful. This may be wrong on X11 Returns @true if operation was successful. This may be wrong on X11
(including GTK+) where the window manager may not support this operation (including GTK+) where the window manager may not support this operation
and there is no way to find out. and there is no way to find out.

View File

@@ -939,6 +939,13 @@ void wxNonOwnedWindowCocoaImpl::SetTitle( const wxString& title, wxFontEncoding
[m_macWindow setTitle:wxCFStringRef( title , encoding ).AsNSString()]; [m_macWindow setTitle:wxCFStringRef( title , encoding ).AsNSString()];
} }
bool wxNonOwnedWindowCocoaImpl::EnableCloseButton(bool enable)
{
[[m_macWindow standardWindowButton:NSWindowCloseButton] setEnabled:enable];
return true;
}
bool wxNonOwnedWindowCocoaImpl::IsMaximized() const bool wxNonOwnedWindowCocoaImpl::IsMaximized() const
{ {
if (([m_macWindow styleMask] & NSResizableWindowMask) != 0) if (([m_macWindow styleMask] & NSResizableWindowMask) != 0)

View File

@@ -205,6 +205,16 @@ bool wxTopLevelWindowMac::IsFullScreen() const
return m_nowpeer->IsFullScreen(); return m_nowpeer->IsFullScreen();
} }
bool wxTopLevelWindowMac::EnableCloseButton(bool enable)
{
// Unlike in wxMSW, wxSYSTEM_MENU is not sufficient to show
// a close button unless combined with one of the resize buttons.
if ( HasFlag(wxCLOSE_BOX) )
return m_nowpeer->EnableCloseButton( enable);
return false;
}
void wxTopLevelWindowMac::RequestUserAttention(int flags) void wxTopLevelWindowMac::RequestUserAttention(int flags)
{ {
return m_nowpeer->RequestUserAttention(flags); return m_nowpeer->RequestUserAttention(flags);