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