Implemented two-window approach for wxX11.

Implemented wxSTAY_ON_TOP the way Qt does it.
  Added group window support.


git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@14764 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
This commit is contained in:
Robert Roebling
2002-03-24 22:17:53 +00:00
parent df0e1b64e3
commit ab6b6b15e0
11 changed files with 462 additions and 314 deletions

View File

@@ -2030,53 +2030,24 @@ int wxWindowDC::GetDepth() const
return -1;
}
// ----------------------------------------------------------------------------
// wxPaintDC
// ----------------------------------------------------------------------------
IMPLEMENT_DYNAMIC_CLASS(wxPaintDC, wxClientDC)
wxPaintDC::wxPaintDC(wxWindow* win)
: wxClientDC(win)
{
#if USE_PAINT_REGION
if (!win->GetClipPaintRegion())
return;
m_paintClippingRegion = win->GetUpdateRegion();
Region region = (Region) m_paintClippingRegion.GetX11Region();
if (region)
{
m_paintClippingRegion = win->GetUpdateRegion();
Region region2 = (Region) m_paintClippingRegion.GetX11Region();
if (region2)
{
m_currentClippingRegion.Union( m_paintClippingRegion );
XSetRegion( (Display*) m_display, (GC) m_penGC, region2 );
XSetRegion( (Display*) m_display, (GC) m_brushGC, region2 );
XSetRegion( (Display*) m_display, (GC) m_textGC, region2 );
XSetRegion( (Display*) m_display, (GC) m_bgGC, region2 );
}
}
#endif // USE_PAINT_REGION
}
//-----------------------------------------------------------------------------
// wxClientDC
//-----------------------------------------------------------------------------
IMPLEMENT_DYNAMIC_CLASS(wxClientDC, wxWindowDC)
wxClientDC::wxClientDC( wxWindow *win )
: wxWindowDC( win )
wxClientDC::wxClientDC( wxWindow *window )
: wxWindowDC( window )
{
wxCHECK_RET( win, _T("NULL window in wxClientDC::wxClientDC") );
wxCHECK_RET( window, _T("NULL window in wxClientDC::wxClientDC") );
#ifdef __WXUNIVERSAL__
wxPoint ptOrigin = win->GetClientAreaOrigin();
m_window = (WXWindow*) window->GetClientWindow();
#if wxUSE_TWO_WINDOWS
#else
wxPoint ptOrigin = window->GetClientAreaOrigin();
SetDeviceOrigin(ptOrigin.x, ptOrigin.y);
wxSize size = win->GetClientSize();
wxSize size = window->GetClientSize();
SetClippingRegion(wxPoint(0, 0), size);
#endif // __WXUNIVERSAL__
}
@@ -2088,6 +2059,33 @@ void wxClientDC::DoGetSize(int *width, int *height) const
m_owner->GetClientSize( width, height );
}
// ----------------------------------------------------------------------------
// wxPaintDC
// ----------------------------------------------------------------------------
IMPLEMENT_DYNAMIC_CLASS(wxPaintDC, wxClientDC)
wxPaintDC::wxPaintDC(wxWindow* window)
: wxClientDC(window)
{
#if USE_PAINT_REGION
if (!window->GetClipPaintRegion())
return;
m_paintClippingRegion = window->GetUpdateRegion();
Region region = (Region) m_paintClippingRegion.GetX11Region();
if (region)
{
m_currentClippingRegion.Union( m_paintClippingRegion );
XSetRegion( (Display*) m_display, (GC) m_penGC, region );
XSetRegion( (Display*) m_display, (GC) m_brushGC, region );
XSetRegion( (Display*) m_display, (GC) m_textGC, region );
XSetRegion( (Display*) m_display, (GC) m_bgGC, region );
}
#endif // USE_PAINT_REGION
}
// ----------------------------------------------------------------------------
// wxDCModule
// ----------------------------------------------------------------------------