[gnumeric] GnmTextView: Fix criticals and FMRs.
- From: Morten Welinder <mortenw src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [gnumeric] GnmTextView: Fix criticals and FMRs.
- Date: Fri, 19 Apr 2013 03:35:41 +0000 (UTC)
commit 67dff485e8e88f03b234d9f876dcbe852f4e6f32
Author: Morten Welinder <terra gnome org>
Date: Thu Apr 18 23:35:10 2013 -0400
GnmTextView: Fix criticals and FMRs.
NEWS | 1 +
src/widgets/ChangeLog | 9 +++++++++
src/widgets/gnumeric-text-view.c | 32 ++++++++++++++++++++++----------
3 files changed, 32 insertions(+), 10 deletions(-)
---
diff --git a/NEWS b/NEWS
index 68b8f3a..2f3567b 100644
--- a/NEWS
+++ b/NEWS
@@ -50,6 +50,7 @@ Morten:
* Enable context menu for graph sheet tabs. [#685446]
* Fix bad interaction between save-as and GtkFileChooser. [#695839]
* Fix vertical toolbar's font button.
+ * Fix criticals in insert-comment dialog.
--------------------------------------------------------------------------
Gnumeric 1.12.1
diff --git a/src/widgets/ChangeLog b/src/widgets/ChangeLog
index 4687cc9..ff7836d 100644
--- a/src/widgets/ChangeLog
+++ b/src/widgets/ChangeLog
@@ -1,3 +1,12 @@
+2013-04-18 Morten Welinder <terra gnome org>
+
+ * gnumeric-text-view.c
+ (gnm_toggle_tool_button_set_active_no_signal): Avoid criticals on
+ dialog close.
+ (gtv_underline_button_activated): Set the data on the right object.
+ (gtv_init): Hold a ref on ->italic and ->strikethrough to avoid
+ accessing freed memory.
+
2013-04-03 Morten Welinder <terra gnome org>
* gnm-notebook.c (GnmNoteBookButton): New widget for use as
diff --git a/src/widgets/gnumeric-text-view.c b/src/widgets/gnumeric-text-view.c
index 06bedc2..63ab557 100644
--- a/src/widgets/gnumeric-text-view.c
+++ b/src/widgets/gnumeric-text-view.c
@@ -30,7 +30,7 @@
#include <gtk/gtk.h>
struct _GnmTextView {
- GtkBox parent;
+ GtkBox parent;
GtkTextBuffer *buffer;
GtkTextView *view;
@@ -76,12 +76,11 @@ gnm_toggle_tool_button_set_active_no_signal (GtkToggleToolButton *button,
gboolean is_active,
GnmTextView *gtv)
{
- gulong handler_id = g_signal_handler_find (button, G_SIGNAL_MATCH_DATA,
- 0, 0, NULL, NULL, gtv);
-
- g_signal_handler_block (button, handler_id);
+ g_signal_handlers_block_matched
+ (button, G_SIGNAL_MATCH_DATA, 0, 0, NULL, NULL, gtv);
gtk_toggle_tool_button_set_active (button, is_active);
- g_signal_handler_unblock (button, handler_id);
+ g_signal_handlers_unblock_matched
+ (button, G_SIGNAL_MATCH_DATA, 0, 0, NULL, NULL, gtv);
}
static void
@@ -178,9 +177,9 @@ gtv_build_toggle_button (GtkWidget *tb, GnmTextView *gtv,
GtkToolItem * tb_button;
tb_button = gtk_toggle_tool_button_new_from_stock (button_name);
- gtk_toolbar_insert(GTK_TOOLBAR(tb), tb_button, -1);
+ gtk_toolbar_insert (GTK_TOOLBAR (tb), tb_button, -1);
g_signal_connect (G_OBJECT (tb_button), "toggled", cb, gtv);
- return GTK_TOGGLE_TOOL_BUTTON (tb_button);
+ return g_object_ref (tb_button);
}
static void
@@ -237,7 +236,7 @@ gtv_underline_button_activated (GtkMenuItem *menuitem, GnmTextView *gtv)
gtk_text_buffer_apply_tag (gtv->buffer, tag, &start, &end);
cb_gtv_emit_changed (NULL, gtv);
}
- g_object_set_data (G_OBJECT (gtv->bold), "underlinevalue", (char *) val);
+ g_object_set_data (G_OBJECT (gtv->underline), "underlinevalue", (char *) val);
}
}
@@ -346,6 +345,17 @@ gtv_build_button_bold (GtkWidget *tb, GnmTextView *gtv)
static GObjectClass *parent_class = NULL;
static void
+gtv_finalize (GObject *object)
+{
+ GnmTextView *gtv = GNM_TEXT_VIEW (object);
+
+ g_clear_object (>v->italic);
+ g_clear_object (>v->strikethrough);
+
+ parent_class->finalize (object);
+}
+
+static void
gtv_set_property (GObject *object,
guint prop_id,
GValue const *value,
@@ -418,7 +428,8 @@ gtv_init (GnmTextView *gtv)
GTK_STOCK_STRIKETHROUGH,
G_CALLBACK
(cb_gtv_set_strikethrough));
- gtk_toolbar_insert(GTK_TOOLBAR(tb), gtk_separator_tool_item_new (), -1);
+ gtk_toolbar_insert (GTK_TOOLBAR(tb),
+ gtk_separator_tool_item_new (), -1);
gtv->bold = gtv_build_button_bold (tb, gtv);
gtv->underline = gtv_build_button_underline (tb, gtv);
@@ -451,6 +462,7 @@ gtv_class_init (GObjectClass *gobject_class)
{
parent_class = g_type_class_peek_parent (gobject_class);
+ gobject_class->finalize = gtv_finalize;
gobject_class->set_property = gtv_set_property;
gobject_class->get_property = gtv_get_property;
((GtkWidgetClass*)gobject_class)->grab_focus = gtv_grab_focus;
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]