summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJuan Pablo Ugarte <juanpablougarte@gmail.com>2011-10-04 17:43:01 -0300
committerJuan Pablo Ugarte <juanpablougarte@gmail.com>2011-10-04 17:43:01 -0300
commitaa34559140f4d8fe2a4273ec293794bf33c97fa1 (patch)
treef4466a9ebe55dff3b1d6da2ef19ad97ea7921d1c
parentd5162993bfe7e4cc8c3600a2625ce7242d55f1ab (diff)
downloadglade-aa34559140f4d8fe2a4273ec293794bf33c97fa1.tar.gz
Fixed bug #660874 "glade-previewer fails to open UI files without top windows"
Fixed bug 660872 "glade-previewer crashes on non-existent files"
-rw-r--r--ChangeLog5
-rw-r--r--gladeui/glade-previewer.c45
2 files changed, 16 insertions, 34 deletions
diff --git a/ChangeLog b/ChangeLog
index 398511a8..e20279be 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,7 +1,8 @@
2011-10-04 Juan Pablo Ugarte <juanpablougarte@gmail.com>
- * gladeui/glade-previewer.c: fixed bug #660874
- "glade-previewer fails to open UI files without top windows"
+ * gladeui/glade-previewer.c:
+ o Fixed bug #660874 "glade-previewer fails to open UI files without top windows"
+ o Fixed bug 660872 "glade-previewer crashes on non-existent files"
o Fixed runtime warnings in option parsing.
* gladeui/glade-base-editor.c, gladeui/glade-project.c: fixed spelling errors
diff --git a/gladeui/glade-previewer.c b/gladeui/glade-previewer.c
index dee26f1c..84cde24d 100644
--- a/gladeui/glade-previewer.c
+++ b/gladeui/glade-previewer.c
@@ -184,20 +184,6 @@ preview_widget (gchar * name, gchar * buffer, gsize length)
return widget;
}
-static GIOChannel *
-channel_from_stream (gint stream)
-{
- GIOChannel *channel;
-
-#ifdef WINDOWS
- channel = g_io_channel_win32_new_fd (stream);
-#else
- channel = g_io_channel_unix_new (stream);
-#endif
-
- return channel;
-}
-
static GtkWidget*
show_widget (GtkWidget *widget)
{
@@ -232,29 +218,22 @@ show_widget (GtkWidget *widget)
static void
preview_file (gchar * toplevel_name, gchar * file_name)
{
+ GError *error = NULL;
gchar *buffer;
gsize length;
- GError *error = NULL;
- GIOChannel *input;
- gint stream;
- GtkWidget *widget;
-
- stream = fileno (fopen (file_name, "r"));
- input = channel_from_stream (stream);
- if (g_io_channel_read_to_end (input, &buffer, &length, &error) !=
- G_IO_STATUS_NORMAL)
+ if (g_file_get_contents (file_name, &buffer, &length, &error))
+ {
+ GtkWidget *widget = preview_widget (toplevel_name, buffer, length);
+ gtk_widget_show_all (show_widget (widget));
+ g_free (buffer);
+ }
+ else
{
g_printerr (_("Error: %s.\n"), error->message);
g_error_free (error);
exit (1);
}
-
- widget = preview_widget (toplevel_name, buffer, length);
- gtk_widget_show_all (show_widget (widget));
-
- g_free (buffer);
- g_io_channel_unref (input);
}
static gchar *
@@ -395,10 +374,12 @@ static void
start_listener (gchar * toplevel_name)
{
GIOChannel *input;
- gint stream;
- stream = fileno (stdin);
- input = channel_from_stream (stream);
+#ifdef WINDOWS
+ input = g_io_channel_win32_new_fd (fileno (stdin));
+#else
+ input = g_io_channel_unix_new (fileno (stdin));
+#endif
g_io_add_watch (input, G_IO_IN | G_IO_HUP, on_data_incoming, toplevel_name);
}