[gnome-keyring] [gcr] Fixes for building with GTK+ 2.91.0



commit a4ae641aad28db1fa94796e514cc4e8fe264883e
Author: Stef Walter <stef memberwebs com>
Date:   Wed Oct 6 14:24:40 2010 +0000

    [gcr] Fixes for building with GTK+ 2.91.0
    
    Mostly related to no more expose_event and only having draw signal.

 docs/reference/gcr/Makefile.am |    4 +-
 gcr/gcr-display-view.c         |  113 ++++++++++++++++++++++++++-------------
 gcr/tests/Makefile.am          |   11 +++--
 tool/Makefile.am               |    4 +-
 ui/Makefile.am                 |    1 +
 5 files changed, 88 insertions(+), 45 deletions(-)
---
diff --git a/docs/reference/gcr/Makefile.am b/docs/reference/gcr/Makefile.am
index fd9955b..48ab723 100644
--- a/docs/reference/gcr/Makefile.am
+++ b/docs/reference/gcr/Makefile.am
@@ -78,7 +78,9 @@ expand_content_files=
 # e.g. GTKDOC_CFLAGS=-I$(top_srcdir) -I$(top_builddir) $(GTK_DEBUG_FLAGS)
 # e.g. GTKDOC_LIBS=$(top_builddir)/gtk/$(gtktargetlib)
 GTKDOC_CFLAGS= -I$(top_srcdir) -I$(top_builddir) $(GOBJECT_CFLAGS) -Wno-error
-GTKDOC_LIBS= $(GOBJECT_LIBS) $(top_builddir)/$(DOC_MODULE)/lib$(DOC_MODULE)@GCR_VERSION_SUFFIX  la
+GTKDOC_LIBS= $(GOBJECT_LIBS) \
+	$(top_builddir)/$(DOC_MODULE)/lib$(DOC_MODULE)@GCR_VERSION_SUFFIX  la \
+	$(top_builddir)/gck/libgck.la
 
 # This includes the standard gtk-doc make rules, copied by gtkdocize.
 include $(top_srcdir)/gtk-doc.make
diff --git a/gcr/gcr-display-view.c b/gcr/gcr-display-view.c
index ad0dd0c..2871fc0 100644
--- a/gcr/gcr-display-view.c
+++ b/gcr/gcr-display-view.c
@@ -259,6 +259,49 @@ on_renderer_data_changed (GcrRenderer *renderer, GcrViewer *self)
 	gcr_renderer_render (renderer, self);
 }
 
+static void
+paint_widget_icons (GcrDisplayView *self, cairo_t *cr)
+{
+	GHashTableIter hit;
+	GtkTextView *view;
+	GdkRectangle visible;
+	GdkRectangle location;
+	GcrDisplayItem *item;
+	gpointer value;
+	GtkTextIter iter;
+
+	view = GTK_TEXT_VIEW (self);
+	gtk_text_view_get_visible_rect (view, &visible);
+
+	g_hash_table_iter_init (&hit, self->pv->items);
+	while (g_hash_table_iter_next (&hit, NULL, &value)) {
+
+		item = value;
+		if (item->pixbuf == NULL)
+			continue;
+
+		gtk_text_buffer_get_iter_at_mark (self->pv->buffer, &iter, item->beginning);
+		gtk_text_view_get_iter_location (view, &iter, &location);
+
+		location.height = gdk_pixbuf_get_height (item->pixbuf);
+		location.width = gdk_pixbuf_get_width (item->pixbuf);
+		location.x = visible.width - location.width - ICON_MARGIN;
+
+		if (!gdk_rectangle_intersect (&visible, &location, NULL))
+			continue;
+
+		gtk_text_view_buffer_to_window_coords (view, GTK_TEXT_WINDOW_TEXT,
+		                                       location.x, location.y,
+		                                       &location.x, &location.y);
+
+		cairo_save (cr);
+		gdk_cairo_set_source_pixbuf (cr, item->pixbuf, location.x, location.y);
+		cairo_rectangle (cr, location.x, location.y, location.width, location.height);
+		cairo_fill (cr);
+		cairo_restore (cr);
+	}
+}
+
 /* -----------------------------------------------------------------------------
  * OBJECT
  */
@@ -376,18 +419,32 @@ _gcr_display_view_realize (GtkWidget *widget)
 		style_display_item (widget, value);
 }
 
+#if GTK_CHECK_VERSION (2,91,0)
+
+static gboolean
+_gcr_display_view_draw (GtkWidget *widget, cairo_t *cr)
+{
+	GdkWindow *window;
+	gboolean handled;
+
+	/* Have GtkTextView draw the text first. */
+	if (GTK_WIDGET_CLASS (_gcr_display_view_parent_class)->draw)
+		handled = GTK_WIDGET_CLASS (_gcr_display_view_parent_class)->draw (widget, cr);
+
+	window = gtk_text_view_get_window (GTK_TEXT_VIEW (widget), GTK_TEXT_WINDOW_TEXT);
+	if (gtk_cairo_should_draw_window (cr, window))
+		paint_widget_icons (GCR_DISPLAY_VIEW (widget), cr);
+
+	return handled;
+}
+
+#else /* GTK 2.x */
+
 static gboolean
 _gcr_display_view_expose_event (GtkWidget *widget, GdkEventExpose *event)
 {
 	GcrDisplayView *self = GCR_DISPLAY_VIEW (widget);
-	GtkTextView *view = GTK_TEXT_VIEW (widget);
 	gboolean handled = FALSE;
-	GdkRectangle visible;
-	GdkRectangle location;
-	GHashTableIter hit;
-	GcrDisplayItem *item;
-	gpointer value;
-	GtkTextIter iter;
 	cairo_t *cr;
 
 	/* Have GtkTextView draw the text first. */
@@ -395,42 +452,17 @@ _gcr_display_view_expose_event (GtkWidget *widget, GdkEventExpose *event)
 		handled = GTK_WIDGET_CLASS (_gcr_display_view_parent_class)->expose_event (widget, event);
 
 	/* Render the pixbuf if it's available */
-	if (event->window == gtk_text_view_get_window (view, GTK_TEXT_WINDOW_TEXT)) {
-
-		gtk_text_view_get_visible_rect (view, &visible);
-
-		g_hash_table_iter_init (&hit, self->pv->items);
-		while (g_hash_table_iter_next (&hit, NULL, &value)) {
-
-			item = value;
-			if (item->pixbuf == NULL)
-				continue;
-
-			gtk_text_buffer_get_iter_at_mark (self->pv->buffer, &iter, item->beginning);
-			gtk_text_view_get_iter_location (view, &iter, &location);
-
-			location.height = gdk_pixbuf_get_height (item->pixbuf);
-			location.width = gdk_pixbuf_get_width (item->pixbuf);
-			location.x = visible.width - location.width - ICON_MARGIN;
-
-			if (!gdk_rectangle_intersect (&visible, &location, NULL))
-				continue;
-
-			gtk_text_view_buffer_to_window_coords (view, GTK_TEXT_WINDOW_TEXT,
-			                                       location.x, location.y,
-			                                       &location.x, &location.y);
-
-			cr = gdk_cairo_create (event->window);
-			gdk_cairo_set_source_pixbuf (cr, item->pixbuf, location.x, location.y);
-			cairo_rectangle (cr, location.x, location.y, location.width, location.height);
-			cairo_fill (cr);
-			cairo_destroy (cr);
-		}
+	if (event->window == gtk_text_view_get_window (GTK_TEXT_VIEW (widget), GTK_TEXT_WINDOW_TEXT)) {
+		cr = gdk_cairo_create (event->window);
+		paint_widget_icons (GCR_DISPLAY_VIEW (self), cr);
+		cairo_destroy (cr);
 	}
 
 	return handled;
 }
 
+#endif /* GTK 2.x */
+
 static void
 _gcr_display_view_class_init (GcrDisplayViewClass *klass)
 {
@@ -445,7 +477,12 @@ _gcr_display_view_class_init (GcrDisplayViewClass *klass)
 	gobject_class->finalize = _gcr_display_view_finalize;
 
 	widget_class->realize = _gcr_display_view_realize;
+
+#if GTK_CHECK_VERSION (2,91,0)
+	widget_class->draw = _gcr_display_view_draw;
+#else
 	widget_class->expose_event = _gcr_display_view_expose_event;
+#endif
 }
 
 static void
diff --git a/gcr/tests/Makefile.am b/gcr/tests/Makefile.am
index cd51b31..1ef2396 100644
--- a/gcr/tests/Makefile.am
+++ b/gcr/tests/Makefile.am
@@ -5,10 +5,10 @@ TESTING_FILES = \
 	unit-test-parser.c
 
 TESTING_LIBS =  \
-	$(top_builddir)/gcr/libgcr.la \
+	$(top_builddir)/gcr/libgcr GCR_VERSION_SUFFIX@.la \
 	$(top_builddir)/egg/libegg.la \
 	$(top_builddir)/egg/libegg-entry-buffer.la \
-	$(top_builddir)/gp11/libgp11.la
+	$(top_builddir)/gck/libgck.la
 
 TESTING_FLAGS = \
 	-DGCR_API_SUBJECT_TO_CHANGE \
@@ -34,7 +34,8 @@ ui_test_certificate_CFLAGS = \
 	$(GTK_CFLAGS)
 
 ui_test_certificate_LDADD = \
-	$(top_builddir)/gcr/libgcr.la \
+	$(top_builddir)/gcr/libgcr GCR_VERSION_SUFFIX@.la \
+	$(top_builddir)/gck/libgck.la \
 	$(GTK_LIBS) \
 	$(LIBGCRYPT_LIBS)
 
@@ -47,6 +48,7 @@ ui_test_unlock_options_CFLAGS = \
 
 ui_test_unlock_options_LDADD = \
 	$(top_builddir)/gcr/libgcr GCR_VERSION_SUFFIX@.la \
+	$(top_builddir)/gck/libgck.la \
 	$(GTK_LIBS) \
 	$(LIBGCRYPT_LIBS)
 
@@ -58,6 +60,7 @@ ui_test_key_CFLAGS = \
 	$(GTK_CFLAGS)
 
 ui_test_key_LDADD = \
-	$(top_builddir)/gcr/libgcr.la \
+	$(top_builddir)/gcr/libgcr GCR_VERSION_SUFFIX@.la \
+	$(top_builddir)/gck/libgck.la \
 	$(GTK_LIBS) \
 	$(LIBGCRYPT_LIBS)
diff --git a/tool/Makefile.am b/tool/Makefile.am
index f79950a..75c3aa3 100644
--- a/tool/Makefile.am
+++ b/tool/Makefile.am
@@ -12,15 +12,15 @@ INCLUDES=	\
 gnome_keyring GCR_VERSION_SUFFIX@_SOURCES = \
 	gkr-tool.c gkr-tool.h \
 	gkr-tool-import.c
-	
+
 gnome_keyring GCR_VERSION_SUFFIX@_CFLAGS = \
 	-DGCR_API_SUBJECT_TO_CHANGE \
 	-DGNOMELOCALEDIR=\""$(datadir)/locale"\"
 
 gnome_keyring GCR_VERSION_SUFFIX@_LDADD = \
-	$(top_builddir)/gck/libgck.la \
 	$(top_builddir)/gcr/libgcr GCR_VERSION_SUFFIX@.la \
 	$(top_builddir)/egg/libegg.la \
+	$(top_builddir)/gck/libgck.la \
 	$(GTHREAD_LIBS) \
 	$(GTK_LIBS) \
 	$(GCRYPT_LIBS) \
diff --git a/ui/Makefile.am b/ui/Makefile.am
index 50c5370..5073e46 100644
--- a/ui/Makefile.am
+++ b/ui/Makefile.am
@@ -69,6 +69,7 @@ gnome_keyring_prompt GCR_VERSION_SUFFIX@_LDADD = \
 	$(top_builddir)/egg/libegg-prompt.la \
 	$(top_builddir)/egg/libegg-entry-buffer.la \
 	$(top_builddir)/gcr/libgcr GCR_VERSION_SUFFIX@.la \
+	$(top_builddir)/gck/libgck.la \
 	$(LIBGCRYPT_LIBS) \
 	$(GTK_LIBS)
 



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