Use wxBufferedPaintDC for wxStyledTextCtrl drawing in wxGTK.

GTK+ doesn't seem to use double buffering for Scintilla window for some
reason, resulting in bad flicker when it's updated, e.g. when the user types
into it.

Force the use of double buffering at wxWidgets level by using
wxBufferedPaintDC for painting it. This may be inefficient if GTK+ does double
buffer it in some cases but at least it gets rid of the flicker.

Closes #12704, #14828.

git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@73001 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
This commit is contained in:
Vadim Zeitlin
2012-11-24 00:33:44 +00:00
parent 7df04680cb
commit 431aea0327
2 changed files with 16 additions and 0 deletions

View File

@@ -53,6 +53,10 @@
#include "wx/ffile.h"
#endif
#ifdef __WXGTK__
#include "wx/dcbuffer.h"
#endif
#include "ScintillaWX.h"
//----------------------------------------------------------------------
@@ -4612,7 +4616,11 @@ void wxStyledTextCtrl::AppendTextRaw(const char* text, int length)
// Event handlers
void wxStyledTextCtrl::OnPaint(wxPaintEvent& WXUNUSED(evt)) {
#ifdef __WXGTK__
wxBufferedPaintDC dc(this);
#else
wxPaintDC dc(this);
#endif
m_swx->DoPaint(&dc, GetUpdateRegion().GetBox());
}

View File

@@ -53,6 +53,10 @@
#include "wx/ffile.h"
#endif
#ifdef __WXGTK__
#include "wx/dcbuffer.h"
#endif
#include "ScintillaWX.h"
//----------------------------------------------------------------------
@@ -750,7 +754,11 @@ void wxStyledTextCtrl::AppendTextRaw(const char* text, int length)
// Event handlers
void wxStyledTextCtrl::OnPaint(wxPaintEvent& WXUNUSED(evt)) {
#ifdef __WXGTK__
wxBufferedPaintDC dc(this);
#else
wxPaintDC dc(this);
#endif
m_swx->DoPaint(&dc, GetUpdateRegion().GetBox());
}