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:
@@ -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);
|
||||||
|
@@ -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;
|
||||||
|
@@ -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;
|
||||||
|
@@ -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;
|
||||||
}
|
}
|
||||||
|
|
||||||
// ----------------------------------------------------------------------------
|
// ----------------------------------------------------------------------------
|
||||||
|
Reference in New Issue
Block a user