SF.net SVN: geany:[3993] trunk

eht16 at users.sourceforge.net eht16 at xxxxx
Sun Jul 19 20:19:09 UTC 2009


Revision: 3993
          http://geany.svn.sourceforge.net/geany/?rev=3993&view=rev
Author:   eht16
Date:     2009-07-19 20:19:09 +0000 (Sun, 19 Jul 2009)

Log Message:
-----------
Don't use the main window as parent for dialog boxes if it is not yet realised.
Set titles for message dialogs.

Modified Paths:
--------------
    trunk/ChangeLog
    trunk/src/dialogs.c
    trunk/src/main.c

Modified: trunk/ChangeLog
===================================================================
--- trunk/ChangeLog	2009-07-19 09:20:37 UTC (rev 3992)
+++ trunk/ChangeLog	2009-07-19 20:19:09 UTC (rev 3993)
@@ -1,3 +1,11 @@
+2009-07-19  Enrico Tröger  <enrico(dot)troeger(at)uvena(dot)de>
+
+ * src/dialogs.c:
+   Don't use the main window as parent for dialog boxes if it is not
+   yet realised.
+   Set titles for message dialogs.
+
+
 2009-07-18  Enrico Tröger  <enrico(dot)troeger(at)uvena(dot)de>
 
  * src/toolbar.c:

Modified: trunk/src/dialogs.c
===================================================================
--- trunk/src/dialogs.c	2009-07-19 09:20:37 UTC (rev 3992)
+++ trunk/src/dialogs.c	2009-07-19 20:19:09 UTC (rev 3993)
@@ -552,6 +552,40 @@
 }
 
 
+#ifndef G_OS_WIN32
+static void show_msgbox_dialog(GtkWidget *dialog, GtkMessageType type, GtkWindow *parent)
+{
+	const gchar *title;
+	switch (type)
+	{
+		case GTK_MESSAGE_ERROR:
+			title = _("Error");
+			break;
+		case GTK_MESSAGE_QUESTION:
+			title = _("Question");
+			break;
+		case GTK_MESSAGE_WARNING:
+			title = _("Warning");
+			break;
+		default:
+			title = _("Information");
+			break;
+	}
+	gtk_window_set_title(GTK_WINDOW(dialog), title);
+	if (parent == NULL)
+	{
+		GdkPixbuf *pb = ui_new_pixbuf_from_inline(GEANY_IMAGE_LOGO);
+		gtk_window_set_icon(GTK_WINDOW(dialog), pb);
+		g_object_unref(pb);
+	}
+	gtk_widget_set_name(dialog, "GeanyDialog");
+
+	gtk_dialog_run(GTK_DIALOG(dialog));
+	gtk_widget_destroy(dialog);
+}
+#endif
+
+
 /**
  *  Show a message box of the type @c type with @c text.
  *  On Unix-like systems a GTK message dialog box is shown, on Win32 systems a native Windows
@@ -569,38 +603,36 @@
 #endif
 	gchar string[512];
 	va_list args;
+	GtkWindow *parent = (main_status.main_window_realized) ? GTK_WINDOW(main_widgets.window) : NULL;
 
 	va_start(args, text);
 	g_vsnprintf(string, 511, text, args);
 	va_end(args);
 
 #ifdef G_OS_WIN32
-	win32_message_dialog(NULL, type, string);
+	win32_message_dialog(GTK_WIDGET(parent), type, string);
 #else
-	dialog = gtk_message_dialog_new(GTK_WINDOW(main_widgets.window), GTK_DIALOG_DESTROY_WITH_PARENT,
+	dialog = gtk_message_dialog_new(parent, GTK_DIALOG_DESTROY_WITH_PARENT,
                                   type, GTK_BUTTONS_OK, "%s", string);
-	gtk_widget_set_name(dialog, "GeanyDialog");
-	gtk_dialog_run(GTK_DIALOG(dialog));
-	gtk_widget_destroy(dialog);
+	show_msgbox_dialog(dialog, type, parent);
 #endif
 }
 
 
 void dialogs_show_msgbox_with_secondary(GtkMessageType type, const gchar *text, const gchar *secondary)
 {
+	GtkWindow *parent = (main_status.main_window_realized) ? GTK_WINDOW(main_widgets.window) : NULL;
 #ifdef G_OS_WIN32
 	/* put the two strings together because Windows message boxes don't support secondary texts */
 	gchar *string = g_strconcat(text, "\n", secondary, NULL);
-	win32_message_dialog(NULL, type, string);
+	win32_message_dialog(GTK_WIDGET(parent), type, string);
 	g_free(string);
 #else
 	GtkWidget *dialog;
-	dialog = gtk_message_dialog_new(GTK_WINDOW(main_widgets.window), GTK_DIALOG_DESTROY_WITH_PARENT,
+	dialog = gtk_message_dialog_new(parent, GTK_DIALOG_DESTROY_WITH_PARENT,
                                   type, GTK_BUTTONS_OK, "%s", text);
-	gtk_widget_set_name(dialog, "GeanyDialog");
 	gtk_message_dialog_format_secondary_text(GTK_MESSAGE_DIALOG(dialog), "%s", secondary);
-	gtk_dialog_run(GTK_DIALOG(dialog));
-	gtk_widget_destroy(dialog);
+	show_msgbox_dialog(dialog, type, parent);
 #endif
 }
 
@@ -1321,13 +1353,21 @@
 #else
 	GtkWidget *dialog;
 
-	if (parent == NULL)
+	if (parent == NULL && main_status.main_window_realized)
 		parent = main_widgets.window;
 
 	dialog = gtk_message_dialog_new(GTK_WINDOW(parent),
 		GTK_DIALOG_DESTROY_WITH_PARENT, GTK_MESSAGE_QUESTION,
 		GTK_BUTTONS_NONE, "%s", question_text);
 	gtk_widget_set_name(dialog, "GeanyDialog");
+	gtk_window_set_title(GTK_WINDOW(dialog), _("Question"));
+	if (parent == NULL)
+	{
+		GdkPixbuf *pb = ui_new_pixbuf_from_inline(GEANY_IMAGE_LOGO);
+		gtk_window_set_icon(GTK_WINDOW(dialog), pb);
+		g_object_unref(pb);
+	}
+
 	/* question_text will be in bold if optional extra_text used */
 	if (extra_text != NULL)
 		gtk_message_dialog_format_secondary_text(GTK_MESSAGE_DIALOG(dialog),
@@ -1361,11 +1401,12 @@
 	gboolean ret = FALSE;
 	gchar string[512];
 	va_list args;
+	GtkWidget *parent = (main_status.main_window_realized) ? main_widgets.window : NULL;
 
 	va_start(args, text);
 	g_vsnprintf(string, 511, text, args);
 	va_end(args);
-	ret = show_question(main_widgets.window, GTK_STOCK_YES, GTK_STOCK_NO, string, NULL);
+	ret = show_question(parent, GTK_STOCK_YES, GTK_STOCK_NO, string, NULL);
 	return ret;
 }
 

Modified: trunk/src/main.c
===================================================================
--- trunk/src/main.c	2009-07-19 09:20:37 UTC (rev 3992)
+++ trunk/src/main.c	2009-07-19 20:19:09 UTC (rev 3993)
@@ -976,9 +976,7 @@
 
 	/* set window icon */
 	{
-		GdkPixbuf *pb;
-
-		pb = ui_new_pixbuf_from_inline(GEANY_IMAGE_LOGO);
+		GdkPixbuf *pb = ui_new_pixbuf_from_inline(GEANY_IMAGE_LOGO);
 		gtk_window_set_icon(GTK_WINDOW(main_widgets.window), pb);
 		g_object_unref(pb);	/* free our reference */
 	}


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