More changes for better redraw flow under X11.

Probably fixed problem with TLW appearing wrong.


git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@14842 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
This commit is contained in:
Robert Roebling
2002-03-28 18:57:50 +00:00
parent 5b8b5075fe
commit c2c0dabfa6
9 changed files with 285 additions and 267 deletions

View File

@@ -507,7 +507,6 @@ bool wxApp::ProcessXEvent(WXEvent* _event)
{
win->GetUpdateRegion().Union( XExposeEventGetX(event), XExposeEventGetY(event),
XExposeEventGetWidth(event), XExposeEventGetHeight(event));
win->GetClearRegion().Union( XExposeEventGetX(event), XExposeEventGetY(event),
XExposeEventGetWidth(event), XExposeEventGetHeight(event));
@@ -525,6 +524,14 @@ bool wxApp::ProcessXEvent(WXEvent* _event)
tmp_event.xexpose.width, tmp_event.xexpose.height );
}
#endif
// This simplifies the expose and clear areas to simple
// rectangles.
win->GetUpdateRegion() = win->GetUpdateRegion().GetBox();
win->GetClearRegion() = win->GetClearRegion().GetBox();
// If we only have one X11 window, always indicate
// that borders might have to be redrawn.
if (win->GetMainWindow() == win->GetClientWindow())
win->NeedUpdateNcAreaInIdle();
@@ -553,7 +560,7 @@ bool wxApp::ProcessXEvent(WXEvent* _event)
{
// Only erase background, paint in idle time.
win->SendEraseEvents();
//win->Update();
// win->Update();
}
return TRUE;
@@ -609,6 +616,13 @@ bool wxApp::ProcessXEvent(WXEvent* _event)
if (event->update.utype == GR_UPDATE_SIZE)
#endif
{
if (win->IsTopLevel())
{
wxTopLevelWindow *tlw = (wxTopLevelWindow*) win;
tlw->SetConfigureGeometry( XConfigureEventGetX(event), XConfigureEventGetY(event),
XConfigureEventGetWidth(event), XConfigureEventGetHeight(event) );
}
if (win->IsTopLevel() && win->IsShown())
{
wxTopLevelWindowX11 *tlw = (wxTopLevelWindowX11 *) win;