Fixed about window handling with multiple browser windows

This commit is contained in:
Pierre Pronchery 2007-05-01 18:35:55 +00:00
parent 49e922179d
commit 27f3ebe1f2
3 changed files with 14 additions and 7 deletions

View File

@ -283,6 +283,9 @@ Browser * browser_new(char const * directory)
/* preferences */ /* preferences */
browser->pr_window = NULL; browser->pr_window = NULL;
/* about */
browser->ab_window = NULL;
gtk_container_add(GTK_CONTAINER(browser->window), vbox); gtk_container_add(GTK_CONTAINER(browser->window), vbox);
gtk_widget_show_all(browser->window); gtk_widget_show_all(browser->window);
browser_cnt++; browser_cnt++;

View File

@ -118,6 +118,8 @@ typedef struct _Browser
GtkWidget * pr_window; GtkWidget * pr_window;
GtkWidget * pr_sort; GtkWidget * pr_sort;
GtkWidget * pr_hidden; GtkWidget * pr_hidden;
/* about */
GtkWidget * ab_window;
} Browser; } Browser;

View File

@ -385,15 +385,15 @@ static void _about_on_license(GtkWidget * widget, gpointer data);
void on_help_about(GtkWidget * widget, gpointer data) void on_help_about(GtkWidget * widget, gpointer data)
{ {
Browser * browser = data; Browser * browser = data;
static GtkWidget * window = NULL; GtkWidget * window;
char const copyright[] = "Copyright (c) 2007 The DeforaOS Project"; char const copyright[] = "Copyright (c) 2007 The DeforaOS Project";
#if GTK_CHECK_VERSION(2, 6, 0) #if GTK_CHECK_VERSION(2, 6, 0)
gsize cnt = 65536; gsize cnt = 65536;
gchar * buf; gchar * buf;
if(window != NULL) if(browser->ab_window != NULL)
{ {
gtk_widget_show(window); gtk_widget_show(browser->ab_window);
return; return;
} }
if((buf = malloc(sizeof(*buf) * cnt)) == NULL) if((buf = malloc(sizeof(*buf) * cnt)) == NULL)
@ -401,7 +401,8 @@ void on_help_about(GtkWidget * widget, gpointer data)
browser_error(browser, "malloc", 0); browser_error(browser, "malloc", 0);
return; return;
} }
window = gtk_about_dialog_new(); browser->ab_window = gtk_about_dialog_new();
window = browser->ab_window;
gtk_window_set_transient_for(GTK_WINDOW(window), GTK_WINDOW( gtk_window_set_transient_for(GTK_WINDOW(window), GTK_WINDOW(
browser->window)); browser->window));
gtk_about_dialog_set_name(GTK_ABOUT_DIALOG(window), PACKAGE); gtk_about_dialog_set_name(GTK_ABOUT_DIALOG(window), PACKAGE);
@ -426,12 +427,13 @@ void on_help_about(GtkWidget * widget, gpointer data)
GtkWidget * hbox; GtkWidget * hbox;
GtkWidget * button; GtkWidget * button;
if(window != NULL) if(browser->ab_window != NULL)
{ {
gtk_widget_show(window); gtk_widget_show(browser->ab_window);
return; return;
} }
window = gtk_window_new(GTK_WINDOW_TOPLEVEL); browser->ab_window = gtk_window_new(GTK_WINDOW_TOPLEVEL);
window = browser->ab_window;
gtk_container_set_border_width(GTK_CONTAINER(window), 4); gtk_container_set_border_width(GTK_CONTAINER(window), 4);
gtk_window_set_title(GTK_WINDOW(window), "About Browser"); gtk_window_set_title(GTK_WINDOW(window), "About Browser");
gtk_window_set_transient_for(GTK_WINDOW(window), GTK_WINDOW( gtk_window_set_transient_for(GTK_WINDOW(window), GTK_WINDOW(