SF.net SVN: geany: [1089] trunk
ntrel at users.sourceforge.net
ntrel at xxxxx
Wed Dec 13 15:18:49 UTC 2006
Revision: 1089
http://svn.sourceforge.net/geany/?rev=1089&view=rev
Author: ntrel
Date: 2006-12-13 07:18:49 -0800 (Wed, 13 Dec 2006)
Log Message:
-----------
Fix memory leaks when using GdkPixbuf, PangoFontDescription and some
strings.
Capitalize main window title.
Add ui_widget_modify_font_from_string().
Modified Paths:
--------------
trunk/ChangeLog
trunk/src/about.c
trunk/src/callbacks.c
trunk/src/document.c
trunk/src/keyfile.c
trunk/src/main.c
trunk/src/msgwindow.c
trunk/src/prefs.c
trunk/src/treeviews.c
trunk/src/ui_utils.c
trunk/src/ui_utils.h
Modified: trunk/ChangeLog
===================================================================
--- trunk/ChangeLog 2006-12-13 00:46:14 UTC (rev 1088)
+++ trunk/ChangeLog 2006-12-13 15:18:49 UTC (rev 1089)
@@ -1,3 +1,14 @@
+2006-12-13 Nick Treleaven <nick.treleaven at btinternet.com>
+
+ * src/ui_utils.h, src/about.c, src/treeviews.c, src/msgwindow.c,
+ src/callbacks.c, src/keyfile.c, src/document.c, src/prefs.c,
+ src/main.c, src/ui_utils.c:
+ Fix memory leaks when using GdkPixbuf, PangoFontDescription and some
+ strings.
+ Capitalize main window title.
+ Add ui_widget_modify_font_from_string().
+
+
2006-12-12 Enrico Tröger <enrico.troeger at uvena.de>
* src/document.c, src/geany.h, src/keyfile.c, src/sciwrappers.c,
Modified: trunk/src/about.c
===================================================================
--- trunk/src/about.c 2006-12-13 00:46:14 UTC (rev 1088)
+++ trunk/src/about.c 2006-12-13 15:18:49 UTC (rev 1089)
@@ -148,6 +148,7 @@
icon = ui_new_pixbuf_from_inline(GEANY_IMAGE_LOGO, FALSE);
gtk_image_set_from_pixbuf(GTK_IMAGE(header_image), icon);
gtk_window_set_icon(GTK_WINDOW(dialog), icon);
+ g_object_unref(icon); // free our reference
// create notebook
notebook = gtk_notebook_new();
Modified: trunk/src/callbacks.c
===================================================================
--- trunk/src/callbacks.c 2006-12-13 00:46:14 UTC (rev 1088)
+++ trunk/src/callbacks.c 2006-12-13 15:18:49 UTC (rev 1089)
@@ -1592,7 +1592,11 @@
else
{
// set default value
- if (utils_str_equal("", app->custom_date_format)) app->custom_date_format = g_strdup("%d.%m.%Y");
+ if (utils_str_equal("", app->custom_date_format))
+ {
+ g_free(app->custom_date_format);
+ app->custom_date_format = g_strdup("%d.%m.%Y");
+ }
dialogs_show_input(_("Custom Date Format"),
_("Enter here a custom date and time format. You can use any conversion specifiers which can be used with the ANSI C strftime function. See \"man strftime\" for more information."),
Modified: trunk/src/document.c
===================================================================
--- trunk/src/document.c 2006-12-13 00:46:14 UTC (rev 1088)
+++ trunk/src/document.c 2006-12-13 15:18:49 UTC (rev 1089)
@@ -676,7 +676,7 @@
doc_list[idx].mtime = st.st_mtime; // get the modification time from file and keep it
doc_list[idx].changed = FALSE;
- doc_list[idx].file_name = g_strdup(utf8_filename);
+ g_free(doc_list[idx].encoding); // if reloading, free old encoding
doc_list[idx].encoding = enc;
doc_list[idx].has_bom = bom;
store_saved_encoding(idx); // store the opened encoding for undo/redo
Modified: trunk/src/keyfile.c
===================================================================
--- trunk/src/keyfile.c 2006-12-13 00:46:14 UTC (rev 1088)
+++ trunk/src/keyfile.c 2006-12-13 15:18:49 UTC (rev 1089)
@@ -700,6 +700,8 @@
else g_strfreev(list);
}
+ g_free(sysconfigfile);
+ g_free(userconfigfile);
g_key_file_free(sysconfig);
g_key_file_free(userconfig);
}
Modified: trunk/src/main.c
===================================================================
--- trunk/src/main.c 2006-12-13 00:46:14 UTC (rev 1088)
+++ trunk/src/main.c 2006-12-13 15:18:49 UTC (rev 1089)
@@ -550,8 +550,15 @@
#endif
configuration_read_filetype_extensions();
- gtk_window_set_icon(GTK_WINDOW(app->window), ui_new_pixbuf_from_inline(GEANY_IMAGE_LOGO, FALSE));
+ // set window icon
+ {
+ GdkPixbuf *pb;
+ pb = ui_new_pixbuf_from_inline(GEANY_IMAGE_LOGO, FALSE);
+ gtk_window_set_icon(GTK_WINDOW(app->window), pb);
+ g_object_unref(pb); // free our reference
+ }
+
// registering some basic events
g_signal_connect(G_OBJECT(app->window), "delete_event", G_CALLBACK(on_exit_clicked), NULL);
g_signal_connect(G_OBJECT(app->window), "configure-event", G_CALLBACK(on_window_configure_event), NULL);
@@ -680,6 +687,7 @@
g_free(app->configdir);
g_free(app->datadir);
g_free(app->docdir);
+ g_free(app->custom_date_format);
g_free(app->editor_font);
g_free(app->tagbar_font);
g_free(app->msgwin_font);
@@ -692,6 +700,8 @@
g_free(app->tools_make_cmd);
g_free(app->tools_term_cmd);
g_free(app->tools_browser_cmd);
+ g_free(app->tools_print_cmd);
+ g_free(app->tools_grep_cmd);
while (! g_queue_is_empty(app->recent_queue))
{
g_free(g_queue_pop_tail(app->recent_queue));
Modified: trunk/src/msgwindow.c
===================================================================
--- trunk/src/msgwindow.c 2006-12-13 00:46:14 UTC (rev 1088)
+++ trunk/src/msgwindow.c 2006-12-13 15:18:49 UTC (rev 1089)
@@ -83,6 +83,7 @@
{
GtkCellRenderer *renderer;
GtkTreeViewColumn *column;
+ PangoFontDescription *pfd;
msgwindow.store_status = gtk_list_store_new(2, GDK_TYPE_COLOR, G_TYPE_STRING);
gtk_tree_view_set_model(GTK_TREE_VIEW(msgwindow.tree_status), GTK_TREE_MODEL(msgwindow.store_status));
@@ -93,7 +94,10 @@
gtk_tree_view_set_enable_search(GTK_TREE_VIEW(msgwindow.tree_status), FALSE);
- gtk_widget_modify_font(msgwindow.tree_status, pango_font_description_from_string(app->msgwin_font));
+ pfd = pango_font_description_from_string(app->msgwin_font);
+ gtk_widget_modify_font(msgwindow.tree_status, pfd);
+ pango_font_description_free(pfd);
+
g_signal_connect(G_OBJECT(msgwindow.tree_status), "button-press-event",
G_CALLBACK(on_msgwin_button_press_event), GINT_TO_POINTER(MSG_STATUS));
@@ -107,6 +111,7 @@
GtkCellRenderer *renderer;
GtkTreeViewColumn *column;
GtkTreeSelection *select;
+ PangoFontDescription *pfd;
msgwindow.store_msg = gtk_list_store_new(4, G_TYPE_INT, G_TYPE_INT, GDK_TYPE_COLOR, G_TYPE_STRING);
gtk_tree_view_set_model(GTK_TREE_VIEW(msgwindow.tree_msg), GTK_TREE_MODEL(msgwindow.store_msg));
@@ -117,7 +122,10 @@
gtk_tree_view_set_enable_search(GTK_TREE_VIEW(msgwindow.tree_msg), FALSE);
- gtk_widget_modify_font(msgwindow.tree_msg, pango_font_description_from_string(app->msgwin_font));
+ pfd = pango_font_description_from_string(app->msgwin_font);
+ gtk_widget_modify_font(msgwindow.tree_msg, pfd);
+ pango_font_description_free(pfd);
+
// use button-release-event so the selection has changed (connect_after button-press-event doesn't work)
g_signal_connect(G_OBJECT(msgwindow.tree_msg), "button-release-event",
G_CALLBACK(on_msgwin_button_press_event), GINT_TO_POINTER(MSG_MESSAGE));
@@ -135,6 +143,7 @@
GtkCellRenderer *renderer;
GtkTreeViewColumn *column;
GtkTreeSelection *select;
+ PangoFontDescription *pfd;
msgwindow.store_compiler = gtk_list_store_new(2, GDK_TYPE_COLOR, G_TYPE_STRING);
gtk_tree_view_set_model(GTK_TREE_VIEW(msgwindow.tree_compiler), GTK_TREE_MODEL(msgwindow.store_compiler));
@@ -145,7 +154,10 @@
gtk_tree_view_set_enable_search(GTK_TREE_VIEW(msgwindow.tree_compiler), FALSE);
- gtk_widget_modify_font(msgwindow.tree_compiler, pango_font_description_from_string(app->msgwin_font));
+ pfd = pango_font_description_from_string(app->msgwin_font);
+ gtk_widget_modify_font(msgwindow.tree_compiler, pfd);
+ pango_font_description_free(pfd);
+
// use button-release-event so the selection has changed (connect_after button-press-event doesn't work)
g_signal_connect(G_OBJECT(msgwindow.tree_compiler), "button-release-event",
G_CALLBACK(on_msgwin_button_press_event), GINT_TO_POINTER(MSG_COMPILER));
Modified: trunk/src/prefs.c
===================================================================
--- trunk/src/prefs.c 2006-12-13 00:46:14 UTC (rev 1088)
+++ trunk/src/prefs.c 2006-12-13 15:18:49 UTC (rev 1089)
@@ -726,14 +726,13 @@
for (i = 0; i < doc_array->len; i++)
{
if (doc_list[i].is_valid && GTK_IS_WIDGET(doc_list[i].tag_tree))
- gtk_widget_modify_font(doc_list[i].tag_tree,
- pango_font_description_from_string(app->tagbar_font));
+ ui_widget_modify_font_from_string(doc_list[i].tag_tree,
+ app->tagbar_font);
}
if (GTK_IS_WIDGET(app->default_tag_tree))
- gtk_widget_modify_font(app->default_tag_tree,
- pango_font_description_from_string(app->tagbar_font));
- gtk_widget_modify_font(lookup_widget(app->window, "entry1"),
- pango_font_description_from_string(app->tagbar_font));
+ ui_widget_modify_font_from_string(app->default_tag_tree, app->tagbar_font);
+ ui_widget_modify_font_from_string(lookup_widget(app->window, "entry1"),
+ app->tagbar_font);
break;
}
case 2:
@@ -741,12 +740,9 @@
if (strcmp(fontbtn, app->msgwin_font) == 0) break;
g_free(app->msgwin_font);
app->msgwin_font = g_strdup(fontbtn);
- gtk_widget_modify_font(msgwindow.tree_compiler,
- pango_font_description_from_string(app->msgwin_font));
- gtk_widget_modify_font(msgwindow.tree_msg,
- pango_font_description_from_string(app->msgwin_font));
- gtk_widget_modify_font(msgwindow.tree_status,
- pango_font_description_from_string(app->msgwin_font));
+ ui_widget_modify_font_from_string(msgwindow.tree_compiler, app->msgwin_font);
+ ui_widget_modify_font_from_string(msgwindow.tree_msg, app->msgwin_font);
+ ui_widget_modify_font_from_string(msgwindow.tree_status, app->msgwin_font);
break;
}
case 3:
Modified: trunk/src/treeviews.c
===================================================================
--- trunk/src/treeviews.c 2006-12-13 00:46:14 UTC (rev 1088)
+++ trunk/src/treeviews.c 2006-12-13 15:18:49 UTC (rev 1089)
@@ -65,13 +65,17 @@
GtkCellRenderer *renderer;
GtkTreeViewColumn *column;
GtkTreeSelection *select;
+ PangoFontDescription *pfd;
renderer = gtk_cell_renderer_text_new();
column = gtk_tree_view_column_new_with_attributes(_("Symbols"), renderer, "text", 0, NULL);
gtk_tree_view_append_column(GTK_TREE_VIEW(tree), column);
gtk_tree_view_set_headers_visible(GTK_TREE_VIEW(tree), FALSE);
- gtk_widget_modify_font(tree, pango_font_description_from_string(app->tagbar_font));
+ pfd = pango_font_description_from_string(app->tagbar_font);
+ gtk_widget_modify_font(tree, pfd);
+ pango_font_description_free(pfd);
+
gtk_tree_view_set_model(GTK_TREE_VIEW(tree), GTK_TREE_MODEL(store));
g_signal_connect(G_OBJECT(tree), "button-press-event",
G_CALLBACK(on_treeviews_button_press_event), GINT_TO_POINTER(TREEVIEW_SYMBOL));
@@ -285,6 +289,8 @@
GtkCellRenderer *renderer;
GtkTreeViewColumn *column;
GtkTreeSelection *select;
+ PangoFontDescription *pfd;
+
tv.tree_openfiles = lookup_widget(app->window, "treeview6");
// store the short filename to show, and the index as reference
@@ -305,7 +311,10 @@
gtk_tree_view_set_enable_search(GTK_TREE_VIEW(tv.tree_openfiles), FALSE);
- gtk_widget_modify_font(tv.tree_openfiles, pango_font_description_from_string(app->tagbar_font));
+ pfd = pango_font_description_from_string(app->tagbar_font);
+ gtk_widget_modify_font(tv.tree_openfiles, pfd);
+ pango_font_description_free(pfd);
+
g_signal_connect(G_OBJECT(tv.tree_openfiles), "button-press-event",
G_CALLBACK(on_treeviews_button_press_event), GINT_TO_POINTER(TREEVIEW_OPENFILES));
Modified: trunk/src/ui_utils.c
===================================================================
--- trunk/src/ui_utils.c 2006-12-13 00:46:14 UTC (rev 1088)
+++ trunk/src/ui_utils.c 2006-12-13 15:18:49 UTC (rev 1089)
@@ -139,15 +139,14 @@
if (index >= 0)
{
- title = g_strdup_printf ("%s: %s %s",
- PACKAGE,
- (doc_list[index].file_name != NULL) ? g_filename_to_utf8(doc_list[index].file_name, -1, NULL, NULL, NULL) : _("untitled"),
+ title = g_strdup_printf("Geany: %s %s",
+ DOC_FILENAME(index),
doc_list[index].changed ? _("(Unsaved)") : "");
gtk_window_set_title(GTK_WINDOW(app->window), title);
g_free(title);
}
else
- gtk_window_set_title(GTK_WINDOW(app->window), PACKAGE);
+ gtk_window_set_title(GTK_WINDOW(app->window), "Geany");
}
@@ -785,6 +784,7 @@
}
+// Note: remember to unref the pixbuf once an image or window has added a reference.
GdkPixbuf *ui_new_pixbuf_from_inline(gint img, gboolean small_img)
{
switch(img)
@@ -826,7 +826,13 @@
GtkWidget *ui_new_image_from_inline(gint img, gboolean small_img)
{
- return gtk_image_new_from_pixbuf(ui_new_pixbuf_from_inline(img, small_img));
+ GtkWidget *wid;
+ GdkPixbuf *pb;
+
+ pb = ui_new_pixbuf_from_inline(img, small_img);
+ wid = gtk_image_new_from_pixbuf(pb);
+ g_object_unref(pb); // the image doesn't adopt our reference, so remove our ref.
+ return wid;
}
@@ -1215,3 +1221,13 @@
}
+void ui_widget_modify_font_from_string(GtkWidget *wid, const gchar *str)
+{
+ PangoFontDescription *pfd;
+
+ pfd = pango_font_description_from_string(str);
+ gtk_widget_modify_font(wid, pfd);
+ pango_font_description_free(pfd);
+}
+
+
Modified: trunk/src/ui_utils.h
===================================================================
--- trunk/src/ui_utils.h 2006-12-13 00:46:14 UTC (rev 1088)
+++ trunk/src/ui_utils.h 2006-12-13 15:18:49 UTC (rev 1089)
@@ -110,4 +110,7 @@
gboolean ui_tree_view_find_next(GtkTreeView *treeview, TVMatchCallback cb);
+
+void ui_widget_modify_font_from_string(GtkWidget *wid, const gchar *str);
+
#endif
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
More information about the Commits
mailing list