[dasher] Gtk3 uses a draw signal rather than an expose-event signal.



commit bb5aca5a2bbc8fd149b3c294741d08a6886c4c98
Author: Patrick Welche <prlw1 cam ac uk>
Date:   Thu Mar 31 22:38:40 2011 +0200

    Gtk3 uses a draw signal rather than an expose-event signal.

 Src/Gtk2/DasherControl.cpp |   12 ++++++++++++
 configure.ac               |    2 +-
 2 files changed, 13 insertions(+), 1 deletions(-)
---
diff --git a/Src/Gtk2/DasherControl.cpp b/Src/Gtk2/DasherControl.cpp
index 9dc3fda..247577d 100644
--- a/Src/Gtk2/DasherControl.cpp
+++ b/Src/Gtk2/DasherControl.cpp
@@ -27,7 +27,11 @@ extern "C" gint canvas_configure_event(GtkWidget *widget, GdkEventConfigure *eve
 extern "C" gint key_press_event(GtkWidget *widget, GdkEventKey *event, gpointer data);
 extern "C" void canvas_destroy_event(GtkWidget *pWidget, gpointer pUserData);
 extern "C" gboolean canvas_focus_event(GtkWidget *widget, GdkEventFocus *event, gpointer data);
+#ifdef HAVE_GTK_CAIRO_SHOULD_DRAW_WINDOW
+extern "C" gint canvas_draw_event(GtkWidget *widget, cairo_t *cr, gpointer data);
+#else
 extern "C" gint canvas_expose_event(GtkWidget *widget, GdkEventExpose *event, gpointer data);
+#endif
 
 static bool g_iTimeoutID = 0;
 
@@ -96,7 +100,11 @@ void CDasherControl::SetupUI() {
   g_signal_connect(m_pCanvas, "key_press_event", G_CALLBACK(key_press_event), this);
 
   g_signal_connect(m_pCanvas, "focus_in_event", G_CALLBACK(canvas_focus_event), this);
+#ifdef HAVE_GTK_CAIRO_SHOULD_DRAW_WINDOW
+  g_signal_connect(m_pCanvas, "draw", G_CALLBACK(canvas_draw_event), this);
+#else
   g_signal_connect(m_pCanvas, "expose_event", G_CALLBACK(canvas_expose_event), this);
+#endif
 
   // Create the Pango cache
 
@@ -651,6 +659,10 @@ extern "C" gboolean canvas_focus_event(GtkWidget *widget, GdkEventFocus *event,
   return static_cast < CDasherControl * >(data)->FocusEvent(widget, event);
 }
 
+#ifdef HAVE_GTK_CAIRO_SHOULD_DRAW_WINDOW
+extern "C" gint canvas_draw_event(GtkWidget *widget, cairo_t *cr, gpointer data) {
+#else
 extern "C" gint canvas_expose_event(GtkWidget *widget, GdkEventExpose *event, gpointer data) {
+#endif
   return ((CDasherControl*)data)->ExposeEvent();
 }
diff --git a/configure.ac b/configure.ac
index 19c9181..e1004d9 100644
--- a/configure.ac
+++ b/configure.ac
@@ -219,7 +219,7 @@ then
 	CPPFLAGS="$CPPFLAGS $GTK2_CFLAGS"
 	LIBS="$LIBS $GTK2_LIBS"
 	AC_CHECK_HEADERS([gdk/gdkkeysyms-compat.h])
-	AC_CHECK_FUNCS([gtk_builder_new gtk_show_uri gdk_window_get_width], [],
+	AC_CHECK_FUNCS([gtk_builder_new gtk_show_uri gdk_window_get_width gtk_cairo_should_draw_window], [],
 		[if test "x$ac_cv_func_gtk_builder_new" = "xno"; then
 			AC_MSG_ERROR([A version of GTK+ providing GtkBuilder is necessary.])
 		fi



[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]