Implement sending wxIconizeEvent in wxOSX.
Translate windowDid{Miniaturize,Deminiaturize} callbacks to calls to SendIconizeEvent(). See #16718.
This commit is contained in:
committed by
Vadim Zeitlin
parent
563329f89f
commit
31e1387541
@@ -113,7 +113,8 @@ public:
|
|||||||
virtual void HandleResized( double timestampsec );
|
virtual void HandleResized( double timestampsec );
|
||||||
virtual void HandleMoved( double timestampsec );
|
virtual void HandleMoved( double timestampsec );
|
||||||
virtual void HandleResizing( double timestampsec, wxRect* rect );
|
virtual void HandleResizing( double timestampsec, wxRect* rect );
|
||||||
|
virtual void HandleMiniaturize( double WXUNUSED(timestampsec), bool miniaturized );
|
||||||
|
|
||||||
void WindowWasPainted();
|
void WindowWasPainted();
|
||||||
|
|
||||||
virtual bool Destroy();
|
virtual bool Destroy();
|
||||||
|
@@ -82,6 +82,9 @@ public:
|
|||||||
|
|
||||||
virtual void SetRepresentedFilename(const wxString& filename);
|
virtual void SetRepresentedFilename(const wxString& filename);
|
||||||
|
|
||||||
|
// do *not* call this to iconize the frame, this is a private function!
|
||||||
|
void OSXSetIconizeState(bool iconic);
|
||||||
|
|
||||||
protected:
|
protected:
|
||||||
// common part of all ctors
|
// common part of all ctors
|
||||||
void Init();
|
void Init();
|
||||||
@@ -92,6 +95,7 @@ protected:
|
|||||||
// should the frame be maximized when it will be shown? set by Maximize()
|
// should the frame be maximized when it will be shown? set by Maximize()
|
||||||
// when it is called while the frame is hidden
|
// when it is called while the frame is hidden
|
||||||
bool m_maximizeOnShow;
|
bool m_maximizeOnShow;
|
||||||
|
|
||||||
private :
|
private :
|
||||||
wxDECLARE_EVENT_TABLE();
|
wxDECLARE_EVENT_TABLE();
|
||||||
};
|
};
|
||||||
|
@@ -4263,8 +4263,6 @@ public:
|
|||||||
|
|
||||||
An event being sent when the frame is iconized (minimized) or restored.
|
An event being sent when the frame is iconized (minimized) or restored.
|
||||||
|
|
||||||
Currently only wxMSW and wxGTK generate such events.
|
|
||||||
|
|
||||||
@onlyfor{wxmsw,wxgtk}
|
@onlyfor{wxmsw,wxgtk}
|
||||||
|
|
||||||
@beginEventTable{wxIconizeEvent}
|
@beginEventTable{wxIconizeEvent}
|
||||||
|
@@ -322,6 +322,8 @@ static NSResponder* s_formerFirstResponder = NULL;
|
|||||||
- (void)windowDidResignKey:(NSNotification *)notification;
|
- (void)windowDidResignKey:(NSNotification *)notification;
|
||||||
- (void)windowDidBecomeKey:(NSNotification *)notification;
|
- (void)windowDidBecomeKey:(NSNotification *)notification;
|
||||||
- (void)windowDidMove:(NSNotification *)notification;
|
- (void)windowDidMove:(NSNotification *)notification;
|
||||||
|
- (void)windowDidMiniaturize:(NSNotification *)notification;
|
||||||
|
- (void)windowDidDeminiaturize:(NSNotification *)notification;
|
||||||
- (BOOL)windowShouldClose:(id)window;
|
- (BOOL)windowShouldClose:(id)window;
|
||||||
- (BOOL)windowShouldZoom:(NSWindow *)window toFrame:(NSRect)newFrame;
|
- (BOOL)windowShouldZoom:(NSWindow *)window toFrame:(NSRect)newFrame;
|
||||||
#if wxHAS_FULL_SCREEN_API
|
#if wxHAS_FULL_SCREEN_API
|
||||||
@@ -413,6 +415,28 @@ extern int wxOSXGetIdFromSelector(SEL action );
|
|||||||
[self triggerMenu:_cmd];
|
[self triggerMenu:_cmd];
|
||||||
}
|
}
|
||||||
|
|
||||||
|
- (void)windowDidMiniaturize:(NSNotification *)notification
|
||||||
|
{
|
||||||
|
NSWindow* window = (NSWindow*) [notification object];
|
||||||
|
wxNonOwnedWindowCocoaImpl* windowimpl = [window WX_implementation];
|
||||||
|
if ( windowimpl )
|
||||||
|
{
|
||||||
|
if ( wxNonOwnedWindow* wxpeer = windowimpl->GetWXPeer() )
|
||||||
|
wxpeer->HandleMiniaturize(0, [window isMiniaturized]);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
- (void)windowDidDeminiaturize:(NSNotification *)notification
|
||||||
|
{
|
||||||
|
NSWindow* window = (NSWindow*) [notification object];
|
||||||
|
wxNonOwnedWindowCocoaImpl* windowimpl = [window WX_implementation];
|
||||||
|
if ( windowimpl )
|
||||||
|
{
|
||||||
|
if ( wxNonOwnedWindow* wxpeer = windowimpl->GetWXPeer() )
|
||||||
|
wxpeer->HandleMiniaturize(0, [window isMiniaturized]);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
- (BOOL)windowShouldClose:(id)nwindow
|
- (BOOL)windowShouldClose:(id)nwindow
|
||||||
{
|
{
|
||||||
wxNonOwnedWindowCocoaImpl* windowimpl = [(NSWindow*) nwindow WX_implementation];
|
wxNonOwnedWindowCocoaImpl* windowimpl = [(NSWindow*) nwindow WX_implementation];
|
||||||
|
@@ -552,4 +552,12 @@ bool wxNonOwnedWindow::DoSetPathShape(const wxGraphicsPath& path)
|
|||||||
return DoSetRegionShape(wxRegion(bmp));
|
return DoSetRegionShape(wxRegion(bmp));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void
|
||||||
|
wxNonOwnedWindow::HandleMiniaturize(double WXUNUSED(timestampsec),
|
||||||
|
bool miniaturized)
|
||||||
|
{
|
||||||
|
if ( wxTopLevelWindowMac* top = (wxTopLevelWindowMac*) MacGetTopLevelWindow() )
|
||||||
|
top->OSXSetIconizeState(miniaturized);
|
||||||
|
}
|
||||||
|
|
||||||
#endif // wxUSE_GRAPHICS_CONTEXT
|
#endif // wxUSE_GRAPHICS_CONTEXT
|
||||||
|
@@ -229,3 +229,12 @@ void wxTopLevelWindowMac::SetRepresentedFilename(const wxString& filename)
|
|||||||
{
|
{
|
||||||
m_nowpeer->SetRepresentedFilename(filename);
|
m_nowpeer->SetRepresentedFilename(filename);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void wxTopLevelWindowMac::OSXSetIconizeState(bool iconize)
|
||||||
|
{
|
||||||
|
if ( iconize != m_iconized )
|
||||||
|
{
|
||||||
|
m_iconized = iconize;
|
||||||
|
(void)SendIconizeEvent(iconize);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
Reference in New Issue
Block a user