[geany/geany] df5edd: Scintilla: fix missing redraws on GTK < 3.9.2

Colomban Wendling git-noreply at xxxxx
Mon May 19 12:31:11 UTC 2014


Branch:      refs/heads/master
Author:      Colomban Wendling <ban at herbesfolles.org>
Committer:   Colomban Wendling <ban at herbesfolles.org>
Date:        Mon, 19 May 2014 12:31:11 UTC
Commit:      df5edd00322e637e2a673f9ea502092f2b4ee2b9
             https://github.com/geany/geany/commit/df5edd00322e637e2a673f9ea502092f2b4ee2b9

Log Message:
-----------
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.


Modified Paths:
--------------
    scintilla/gtk/ScintillaGTK.cxx

Modified: scintilla/gtk/ScintillaGTK.cxx
20 lines changed, 15 insertions(+), 5 deletions(-)
===================================================================
@@ -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;



--------------
This E-Mail was brought to you by github_commit_mail.py (Source: https://github.com/geany/infrastructure).


More information about the Commits mailing list