[gnumeric] stf: restore red ruler for fixed-width page.
- From: Morten Welinder <mortenw src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [gnumeric] stf: restore red ruler for fixed-width page.
- Date: Wed, 14 Sep 2011 14:45:15 +0000 (UTC)
commit 7f42b5c301fbc279c5d171bcd5be1508fa8796e4
Author: Morten Welinder <terra gnome org>
Date: Wed Sep 14 10:44:45 2011 -0400
stf: restore red ruler for fixed-width page.
src/dialogs/ChangeLog | 6 +++++
src/dialogs/dialog-stf-fixed-page.c | 37 +++++++++++++++++++++++++++-------
2 files changed, 35 insertions(+), 8 deletions(-)
---
diff --git a/src/dialogs/ChangeLog b/src/dialogs/ChangeLog
index 18527bc..44418b2 100644
--- a/src/dialogs/ChangeLog
+++ b/src/dialogs/ChangeLog
@@ -1,3 +1,9 @@
+2011-09-14 Morten Welinder <terra gnome org>
+
+ * dialog-stf-fixed-page.c (cb_treeview_draw): Renamed from
+ cb_treeview_expose. Use supplied cairo_t.
+ (cb_treeview_draw_2): New function to work around a Gtk issue.
+
2011-09-13 Andreas J. Guelzow <aguelzow pyrshep ca>
* src/dialogs/dialog-stf-csv-page.c (csv_page_parseoptions_to_gui):
diff --git a/src/dialogs/dialog-stf-fixed-page.c b/src/dialogs/dialog-stf-fixed-page.c
index d70ff50..5864bd7 100644
--- a/src/dialogs/dialog-stf-fixed-page.c
+++ b/src/dialogs/dialog-stf-fixed-page.c
@@ -540,13 +540,12 @@ cb_treeview_motion (GtkWidget *widget,
static gboolean
-cb_treeview_expose (GtkWidget *widget,
- GdkEventExpose *event,
- StfDialogData *pagedata)
+cb_treeview_draw (GtkWidget *widget,
+ cairo_t *cr,
+ StfDialogData *pagedata)
{
int ruler_x = pagedata->fixed.ruler_x;
int height;
- cairo_t *cr;
GtkAllocation a;
if (ruler_x < 0)
@@ -555,18 +554,33 @@ cb_treeview_expose (GtkWidget *widget,
gtk_widget_get_allocation (widget, &a);
height = a.height;
- cr = gdk_cairo_create (event->window);
+ cairo_save (cr);
cairo_rectangle (cr, ruler_x, 0, ruler_x + 1, height);
cairo_clip (cr);
cairo_set_source_rgb (cr, 1.0, 0, 0);
cairo_move_to (cr, ruler_x, 0);
cairo_line_to (cr, ruler_x, height);
cairo_stroke (cr);
- cairo_destroy (cr);
+ cairo_restore (cr);
return FALSE;
}
+static gboolean
+cb_treeview_draw_2 (GtkWidget *widget,
+ cairo_t *cr,
+ StfDialogData *pagedata)
+{
+ /* Manually call default handler */
+ GTK_WIDGET_GET_CLASS (widget)->draw (widget, cr);
+
+ /* Call the would-be connect_after handler. */
+ cb_treeview_draw (widget, cr, pagedata);
+
+ /* Abort emmission. */
+ return TRUE;
+}
+
/*************************************************************************************************
* FIXED EXPORTED FUNCTIONS
*************************************************************************************************/
@@ -617,7 +631,14 @@ stf_dialog_fixed_page_init (GtkBuilder *gui, StfDialogData *pagedata)
g_signal_connect (G_OBJECT (renderdata->tree_view),
"motion_notify_event",
G_CALLBACK (cb_treeview_motion), pagedata);
+#if 0
+ /* Needs GtkTreeView bugfix in gtk+ of 20110914. */
g_signal_connect_after (G_OBJECT (renderdata->tree_view),
- "expose_event",
- G_CALLBACK (cb_treeview_expose), pagedata);
+ "draw",
+ G_CALLBACK (cb_treeview_draw), pagedata);
+#else
+ g_signal_connect (G_OBJECT (renderdata->tree_view),
+ "draw",
+ G_CALLBACK (cb_treeview_draw_2), pagedata);
+#endif
}
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]