[goffice] Fixed crashes in go-image-selector.c
- From: Jean BrÃfort <jbrefort src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [goffice] Fixed crashes in go-image-selector.c
- Date: Sat, 22 Oct 2011 08:44:17 +0000 (UTC)
commit 13066ed16abea8921c2e90487614a0de5a490357
Author: Jean Brefort <jean brefort normalesup org>
Date: Sat Oct 22 10:43:49 2011 +0200
Fixed crashes in go-image-selector.c
ChangeLog | 6 ++++++
NEWS | 2 +-
goffice/gtk/go-image-sel.c | 16 +++++++++++++---
3 files changed, 20 insertions(+), 4 deletions(-)
---
diff --git a/ChangeLog b/ChangeLog
index c7391f6..f8ece52 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,9 @@
+2011-10-22 Jean Brefort <jean brefort normalesup org>
+
+ * goffice/gtk/go-image-sel.c (cb_entry_focus_out),
+ (cb_file_image_select), (delete_event_cb),
+ (cancel_button_clicked_cb): more fixes, see #660917.
+
2011-10-21 Morten Welinder <terra gnome org>
* goffice/app/go-conf-gsettings.c (go_conf_get_node): Add
diff --git a/NEWS b/NEWS
index 602c18f..7da84a1 100644
--- a/NEWS
+++ b/NEWS
@@ -30,7 +30,7 @@ Jean:
* Make sheet widgets scalable. [#605434]
* Update series labels when needed. [658527]
* Fix background images issues in graphs. [#660917]
- * Make GSettings trhe default configuration backend.
+ * Make GSettings the default configuration backend.
Morten:
* Recognize scientific formats with longer exponents.
diff --git a/goffice/gtk/go-image-sel.c b/goffice/gtk/go-image-sel.c
index 7dd6fbc..bc1242e 100644
--- a/goffice/gtk/go-image-sel.c
+++ b/goffice/gtk/go-image-sel.c
@@ -46,7 +46,7 @@ struct _GOImageSelState {
};
static void
-cb_entry_destroyed (GtkEntry *entry, G_GNUC_UNUSED GdkEvent *event, GOImageSelState *state)
+cb_entry_focus_out (GtkEntry *entry, G_GNUC_UNUSED GdkEvent *event, GOImageSelState *state)
{
char const *new_name = gtk_entry_get_text (entry);
if (new_name && *new_name && !go_doc_get_image (state->doc, new_name)) {
@@ -76,7 +76,7 @@ cb_file_image_select (GtkWidget *cc, GOImageSelState *state)
g_free (new_name);
}
gtk_entry_set_text (GTK_ENTRY (w), new_name);
- g_signal_connect (G_OBJECT (w), "focus-out-event", G_CALLBACK (cb_entry_destroyed), state);
+ g_signal_connect (G_OBJECT (w), "focus-out-event", G_CALLBACK (cb_entry_focus_out), state);
state->name = new_name;
gtk_container_add (GTK_CONTAINER (box), w);
gtk_widget_show_all (box);
@@ -108,8 +108,16 @@ cb_file_image_select (GtkWidget *cc, GOImageSelState *state)
path = gtk_tree_model_get_path (GTK_TREE_MODEL (state->model), &iter);
gtk_icon_view_select_path (state->icon_view, path);
gtk_tree_path_free (path);
+ } else {
+ g_object_unref (image);
+ image = g_object_ref (real_image);
}
- g_object_unref (image);
+ *(state->result) = image;
+ gtk_dialog_response (GTK_DIALOG (state->dialog), GTK_RESPONSE_OK);
+ gtk_widget_destroy (state->dialog);
+ g_free (state->name);
+ g_free (state->uri);
+ g_free (state);
}
}
}
@@ -135,6 +143,7 @@ sort_func (GtkTreeModel *model,
static gboolean
delete_event_cb (GtkWidget *cc, GdkEvent *event, GOImageSelState *state)
{
+ gtk_widget_destroy (state->dialog);
g_free (state->name);
g_free (state->uri);
g_free (state);
@@ -172,6 +181,7 @@ static void
cancel_button_clicked_cb (GtkWidget *cc, GOImageSelState *state)
{
gtk_widget_destroy (state->dialog);
+ g_free (state->name);
g_free (state->uri);
g_free (state);
}
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]