PCH support.

git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@42359 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
This commit is contained in:
Włodzimierz Skiba
2006-10-24 19:36:21 +00:00
parent 37e548439a
commit b64c92ee20

View File

@@ -25,8 +25,12 @@
#endif #endif
#include "wx/overlay.h" #include "wx/overlay.h"
#ifndef WX_PRECOMP
#include "wx/dcclient.h"
#endif
#include "wx/private/overlay.h" #include "wx/private/overlay.h"
#include "wx/dcclient.h"
#if wxHAS_NATIVE_OVERLAY #if wxHAS_NATIVE_OVERLAY
@@ -46,7 +50,7 @@ wxOverlayImpl::~wxOverlayImpl()
Reset(); Reset();
} }
bool wxOverlayImpl::IsOk() bool wxOverlayImpl::IsOk()
{ {
return m_overlayWindow != NULL ; return m_overlayWindow != NULL ;
} }
@@ -66,45 +70,45 @@ OSStatus wxOverlayImpl::CreateOverlayWindow()
OSStatus err; OSStatus err;
WindowAttributes overlayAttributes = kWindowIgnoreClicksAttribute; WindowAttributes overlayAttributes = kWindowIgnoreClicksAttribute;
if ( m_window ) if ( m_window )
{ {
m_overlayParentWindow =(WindowRef) m_window->MacGetTopLevelWindowRef(); m_overlayParentWindow =(WindowRef) m_window->MacGetTopLevelWindowRef();
Rect bounds ; Rect bounds ;
MacGetBounds(&bounds); MacGetBounds(&bounds);
err = CreateNewWindow( kOverlayWindowClass, overlayAttributes, &bounds, &m_overlayWindow ); err = CreateNewWindow( kOverlayWindowClass, overlayAttributes, &bounds, &m_overlayWindow );
if ( err == noErr ) if ( err == noErr )
{ {
SetWindowGroup( m_overlayWindow, GetWindowGroup(m_overlayParentWindow)); // Put them in the same group so that their window layers are consistent SetWindowGroup( m_overlayWindow, GetWindowGroup(m_overlayParentWindow)); // Put them in the same group so that their window layers are consistent
} }
} }
else else
{ {
m_overlayParentWindow = NULL ; m_overlayParentWindow = NULL ;
CGRect cgbounds ; CGRect cgbounds ;
cgbounds = CGDisplayBounds(CGMainDisplayID()); cgbounds = CGDisplayBounds(CGMainDisplayID());
Rect bounds; Rect bounds;
bounds.top = cgbounds.origin.y; bounds.top = cgbounds.origin.y;
bounds.left = cgbounds.origin.x; bounds.left = cgbounds.origin.x;
bounds.bottom = bounds.top + cgbounds.size.height; bounds.bottom = bounds.top + cgbounds.size.height;
bounds.right = bounds.left + cgbounds.size.width; bounds.right = bounds.left + cgbounds.size.width;
err = CreateNewWindow( kOverlayWindowClass, overlayAttributes, &bounds, &m_overlayWindow ); err = CreateNewWindow( kOverlayWindowClass, overlayAttributes, &bounds, &m_overlayWindow );
} }
ShowWindow(m_overlayWindow); ShowWindow(m_overlayWindow);
return err; return err;
} }
void wxOverlayImpl::Init( wxWindowDC* dc, int x , int y , int width , int height ) void wxOverlayImpl::Init( wxWindowDC* dc, int x , int y , int width , int height )
{ {
wxASSERT_MSG( !IsOk() , _("You cannot Init an overlay twice") ); wxASSERT_MSG( !IsOk() , _("You cannot Init an overlay twice") );
m_window = dc->GetWindow(); m_window = dc->GetWindow();
m_x = x ; m_x = x ;
m_y = y ; m_y = y ;
m_width = width ; m_width = width ;
m_height = height ; m_height = height ;
OSStatus err = CreateOverlayWindow(); OSStatus err = CreateOverlayWindow();
wxASSERT_MSG( err == noErr , _("Couldn't create the overlay window") ); wxASSERT_MSG( err == noErr , _("Couldn't create the overlay window") );
#ifndef __LP64__ #ifndef __LP64__
@@ -118,26 +122,26 @@ void wxOverlayImpl::Init( wxWindowDC* dc, int x , int y , int width , int height
void wxOverlayImpl::BeginDrawing( wxWindowDC* dc) void wxOverlayImpl::BeginDrawing( wxWindowDC* dc)
{ {
// TODO CS // TODO CS
dc->SetGraphicsContext( wxGraphicsContext::CreateFromNative( m_overlayContext ) ); dc->SetGraphicsContext( wxGraphicsContext::CreateFromNative( m_overlayContext ) );
/* /*
delete dc->m_graphicContext ; delete dc->m_graphicContext ;
dc->m_graphicContext = new wxMacCGContext( m_overlayContext ); dc->m_graphicContext = new wxMacCGContext( m_overlayContext );
// we are right now startin at 0,0 not at the wxWindow's origin, so most of the calculations // we are right now startin at 0,0 not at the wxWindow's origin, so most of the calculations
// int dc are already corect // int dc are already corect
// just to make sure : // just to make sure :
dc->m_macLocalOrigin.x = 0 ; dc->m_macLocalOrigin.x = 0 ;
dc->m_macLocalOrigin.y = 0 ; dc->m_macLocalOrigin.y = 0 ;
*/ */
wxSize size = dc->GetSize() ; wxSize size = dc->GetSize() ;
dc->SetClippingRegion( 0 , 0 , size.x , size.y ) ; dc->SetClippingRegion( 0 , 0 , size.x , size.y ) ;
} }
void wxOverlayImpl::EndDrawing( wxWindowDC* dc) void wxOverlayImpl::EndDrawing( wxWindowDC* dc)
{ {
dc->SetGraphicsContext(NULL); dc->SetGraphicsContext(NULL);
} }
void wxOverlayImpl::Clear(wxWindowDC* dc) void wxOverlayImpl::Clear(wxWindowDC* dc)
{ {
wxASSERT_MSG( IsOk() , _("You cannot Clear an overlay that is not inited") ); wxASSERT_MSG( IsOk() , _("You cannot Clear an overlay that is not inited") );
CGRect box = CGRectMake( m_x - 1, m_y - 1 , m_width + 2 , m_height + 2 ); CGRect box = CGRectMake( m_x - 1, m_y - 1 , m_width + 2 , m_height + 2 );
@@ -153,8 +157,8 @@ void wxOverlayImpl::Reset()
wxASSERT_MSG( err == noErr , _("Couldn't end the context on the overlay window") ); wxASSERT_MSG( err == noErr , _("Couldn't end the context on the overlay window") );
#endif #endif
m_overlayContext = NULL ; m_overlayContext = NULL ;
} }
// todo : don't dispose, only hide and reposition on next run // todo : don't dispose, only hide and reposition on next run
if (m_overlayWindow) if (m_overlayWindow)
{ {