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)) ) if ( !(style & (wxLB_MULTIPLE | wxLB_EXTENDED)) )
style |= wxLB_SINGLE; 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; return FALSE;
SetWindow(this); SetWindow(this);

View File

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

View File

@@ -132,7 +132,7 @@ bool wxTopLevelWindowX11::Create(wxWindow *parent,
if (HasFlag( wxNO_FULL_REPAINT_ON_RESIZE )) if (HasFlag( wxNO_FULL_REPAINT_ON_RESIZE ))
{ {
xattributes_mask |= CWBitGravity; xattributes_mask |= CWBitGravity;
xattributes.bit_gravity = StaticGravity; xattributes.bit_gravity = NorthWestGravity;
} }
xattributes_mask |= CWEventMask; 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.x = pos2.x;
size_hints.y = pos2.y; size_hints.y = pos2.y;
size_hints.width = size2.x; size_hints.width = size2.x;
size_hints.height = size2.y; size_hints.height = size2.y;
size_hints.win_gravity = NorthWestGravity;
XSetWMNormalHints( xdisplay, xwindow, &size_hints); XSetWMNormalHints( xdisplay, xwindow, &size_hints);
XWMHints wm_hints; XWMHints wm_hints;

View File

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