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