From df5edd00322e637e2a673f9ea502092f2b4ee2b9 Mon Sep 17 00:00:00 2001 From: Colomban Wendling Date: Mon, 19 May 2014 03:19:09 +0200 Subject: [PATCH] Scintilla: fix missing redraws on GTK < 3.9.2 Also, make the recent redraw fixes depend on the GTK version Scintilla is running against, rather than built against. This allows for the same build to work with both GTK < 3.9.2 or >= 3.9.2. --- scintilla/gtk/ScintillaGTK.cxx | 20 +++++++++++++++----- 1 file changed, 15 insertions(+), 5 deletions(-) diff --git a/scintilla/gtk/ScintillaGTK.cxx b/scintilla/gtk/ScintillaGTK.cxx index 43c83f2c3..17a439952 100644 --- a/scintilla/gtk/ScintillaGTK.cxx +++ b/scintilla/gtk/ScintillaGTK.cxx @@ -759,9 +759,16 @@ void ScintillaGTK::Initialise() { #else g_signal_connect(G_OBJECT(widtxt), "expose_event", G_CALLBACK(ScintillaGTK::ExposeText), this); - // Avoid background drawing flash - gtk_widget_set_double_buffered(widtxt, FALSE); #endif +#if GTK_CHECK_VERSION(3,0,0) + // we need a runtime check because we don't want double buffering when + // running on >= 3.9.2 + if (gtk_check_version(3,9,2) != NULL /* on < 3.9.2 */) +#endif + { + // Avoid background drawing flash/missing redraws + gtk_widget_set_double_buffered(widtxt, FALSE); + } gtk_widget_set_events(widtxt, GDK_EXPOSURE_MASK); gtk_widget_set_size_request(widtxt, 100, 100); adjustmentv = GTK_ADJUSTMENT(gtk_adjustment_new(0.0, 0.0, 201.0, 1.0, 20.0, 20.0)); @@ -2444,9 +2451,12 @@ gboolean ScintillaGTK::DrawThis(cairo_t *cr) { // Starting from the following version, the expose event are not propagated // for double buffered non native windows, so we need to call it ourselves // or keep the default handler -#if GTK_CHECK_VERSION(3,9,2) - gtk_container_propagate_draw( - GTK_CONTAINER(PWidget(wMain)), PWidget(wText), cr); +#if GTK_CHECK_VERSION(3,0,0) + // we want to forward on any >= 3.9.2 runtime + if (gtk_check_version(3,9,2) == NULL) { + gtk_container_propagate_draw( + GTK_CONTAINER(PWidget(wMain)), PWidget(wText), cr); + } #endif } catch (...) { errorStatus = SC_STATUS_FAILURE; -- 2.11.4.GIT