added port state save class
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@26451 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
This commit is contained in:
@@ -105,10 +105,23 @@ public:
|
|||||||
wxMacWindowClipper( const wxWindow* win ) ;
|
wxMacWindowClipper( const wxWindow* win ) ;
|
||||||
~wxMacWindowClipper() ;
|
~wxMacWindowClipper() ;
|
||||||
private:
|
private:
|
||||||
|
GrafPtr m_newPort ;
|
||||||
RgnHandle m_formerClip ;
|
RgnHandle m_formerClip ;
|
||||||
RgnHandle m_newClip ;
|
RgnHandle m_newClip ;
|
||||||
} ;
|
} ;
|
||||||
|
|
||||||
|
class WXDLLEXPORT wxMacWindowStateSaver : public wxMacWindowClipper
|
||||||
|
{
|
||||||
|
DECLARE_NO_COPY_CLASS(wxMacWindowStateSaver)
|
||||||
|
|
||||||
|
public:
|
||||||
|
wxMacWindowStateSaver( const wxWindow* win ) ;
|
||||||
|
~wxMacWindowStateSaver() ;
|
||||||
|
private:
|
||||||
|
GrafPtr m_newPort ;
|
||||||
|
ThemeDrawingState m_themeDrawingState ;
|
||||||
|
} ;
|
||||||
|
|
||||||
/*
|
/*
|
||||||
class wxMacDrawingHelper
|
class wxMacDrawingHelper
|
||||||
{
|
{
|
||||||
|
@@ -107,6 +107,7 @@ typedef wxMacPortSetter wxMacFastPortSetter ;
|
|||||||
wxMacWindowClipper::wxMacWindowClipper( const wxWindow* win ) :
|
wxMacWindowClipper::wxMacWindowClipper( const wxWindow* win ) :
|
||||||
wxMacPortSaver( (GrafPtr) GetWindowPort((WindowRef) win->MacGetTopLevelWindowRef()) )
|
wxMacPortSaver( (GrafPtr) GetWindowPort((WindowRef) win->MacGetTopLevelWindowRef()) )
|
||||||
{
|
{
|
||||||
|
m_newPort =(GrafPtr) GetWindowPort((WindowRef) win->MacGetTopLevelWindowRef()) ;
|
||||||
m_formerClip = NewRgn() ;
|
m_formerClip = NewRgn() ;
|
||||||
m_newClip = NewRgn() ;
|
m_newClip = NewRgn() ;
|
||||||
GetClip( m_formerClip ) ;
|
GetClip( m_formerClip ) ;
|
||||||
@@ -126,11 +127,26 @@ wxMacWindowClipper::wxMacWindowClipper( const wxWindow* win ) :
|
|||||||
|
|
||||||
wxMacWindowClipper::~wxMacWindowClipper()
|
wxMacWindowClipper::~wxMacWindowClipper()
|
||||||
{
|
{
|
||||||
|
SetPort( m_newPort ) ;
|
||||||
SetClip( m_formerClip ) ;
|
SetClip( m_formerClip ) ;
|
||||||
DisposeRgn( m_newClip ) ;
|
DisposeRgn( m_newClip ) ;
|
||||||
DisposeRgn( m_formerClip ) ;
|
DisposeRgn( m_formerClip ) ;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
wxMacWindowStateSaver::wxMacWindowStateSaver( const wxWindow* win ) :
|
||||||
|
wxMacWindowClipper( win )
|
||||||
|
{
|
||||||
|
// the port is already set at this point
|
||||||
|
m_newPort =(GrafPtr) GetWindowPort((WindowRef) win->MacGetTopLevelWindowRef()) ;
|
||||||
|
GetThemeDrawingState( &m_themeDrawingState ) ;
|
||||||
|
}
|
||||||
|
|
||||||
|
wxMacWindowStateSaver::~wxMacWindowStateSaver()
|
||||||
|
{
|
||||||
|
SetPort( m_newPort ) ;
|
||||||
|
SetThemeDrawingState( m_themeDrawingState , true ) ;
|
||||||
|
}
|
||||||
|
|
||||||
//-----------------------------------------------------------------------------
|
//-----------------------------------------------------------------------------
|
||||||
// Local functions
|
// Local functions
|
||||||
//-----------------------------------------------------------------------------
|
//-----------------------------------------------------------------------------
|
||||||
|
Reference in New Issue
Block a user