Some more fiddling with two-window approach and

the wxNO_FULL_REPAINT_ON_RESIZE flag.


git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@14779 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
This commit is contained in:
Robert Roebling 2002-03-25 22:05:53 +00:00
parent ec483b11bb
commit 065722d7b1
4 changed files with 30 additions and 6 deletions

View File

@ -101,7 +101,7 @@ bool wxListBox::Create(wxWindow *parent,
if ( !(style & (wxLB_MULTIPLE | wxLB_EXTENDED)) )
style |= wxLB_SINGLE;
if ( !wxControl::Create(parent, id, pos, size, style, wxDefaultValidator, name) )
if ( !wxControl::Create(parent, id, pos, size, style | wxVSCROLL , wxDefaultValidator, name) )
return FALSE;
SetWindow(this);

View File

@ -530,7 +530,7 @@ bool wxApp::ProcessXEvent(WXEvent* _event)
// Only erase background, paint in idle time.
win->SendEraseEvents();
//win->Update();
// win->Update();
}
return TRUE;

View File

@ -132,7 +132,7 @@ bool wxTopLevelWindowX11::Create(wxWindow *parent,
if (HasFlag( wxNO_FULL_REPAINT_ON_RESIZE ))
{
xattributes_mask |= CWBitGravity;
xattributes.bit_gravity = StaticGravity;
xattributes.bit_gravity = NorthWestGravity;
}
xattributes_mask |= CWEventMask;
@ -199,11 +199,12 @@ bool wxTopLevelWindowX11::Create(wxWindow *parent,
}
}
size_hints.flags = PSize | PPosition;
size_hints.flags = PSize | PPosition | PWinGravity;
size_hints.x = pos2.x;
size_hints.y = pos2.y;
size_hints.width = size2.x;
size_hints.height = size2.y;
size_hints.win_gravity = NorthWestGravity;
XSetWMNormalHints( xdisplay, xwindow, &size_hints);
XWMHints wm_hints;

View File

@ -102,6 +102,7 @@ void wxWindowX11::Init()
m_mainWindow = (WXWindow) 0;
m_clientWindow = (WXWindow) 0;
m_insertIntoMain = FALSE;
m_updateNcArea = FALSE;
m_winCaptured = FALSE;
m_needsInputFocus = FALSE;
@ -212,7 +213,26 @@ bool wxWindowX11::Create(wxWindow *parent, wxWindowID id,
xattributes.bit_gravity = StaticGravity;
}
xwindow = XCreateWindow( xdisplay, xwindow, 0, 0, size2.x, size2.y,
if (HasFlag( wxSUNKEN_BORDER) || HasFlag( wxRAISED_BORDER))
{
pos2.x = 2;
pos2.y = 2;
size2.x -= 4;
size2.y -= 4;
} else
if (HasFlag( wxSIMPLE_BORDER ))
{
pos2.x = 1;
pos2.y = 1;
size2.x -= 2;
size2.y -= 2;
} else
{
pos2.x = 0;
pos2.y = 0;
}
xwindow = XCreateWindow( xdisplay, xwindow, pos2.x, pos2.y, size2.x, size2.y,
0, DefaultDepth(xdisplay,xscreen), InputOutput, xvisual, xattributes_mask, &xattributes );
XSetWindowBackgroundPixmap( xdisplay, xwindow, None );
@ -235,7 +255,7 @@ bool wxWindowX11::Create(wxWindow *parent, wxWindowID id,
if (HasFlag( wxNO_FULL_REPAINT_ON_RESIZE ))
{
xattributes_mask |= CWBitGravity;
xattributes.bit_gravity = StaticGravity;
xattributes.bit_gravity = NorthWestGravity;
}
Window xwindow = XCreateWindow( xdisplay, xparent, pos2.x, pos2.y, size2.x, size2.y,
@ -1051,6 +1071,7 @@ void wxWindowX11::Update()
{
if (m_updateNcArea)
{
// wxLogDebug("wxWindowX11::UpdateNC: %s", GetClassInfo()->GetClassName());
// Send nc paint events.
SendNcPaintEvents();
}
@ -1124,6 +1145,8 @@ void wxWindowX11::SendNcPaintEvents()
wxNcPaintEvent nc_paint_event( GetId() );
nc_paint_event.SetEventObject( this );
GetEventHandler()->ProcessEvent( nc_paint_event );
m_updateNcArea = FALSE;
}
// ----------------------------------------------------------------------------