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 */
browser->pr_window = NULL;
/* about */
browser->ab_window = NULL;
gtk_container_add(GTK_CONTAINER(browser->window), vbox);
gtk_widget_show_all(browser->window);
browser_cnt++;

View File

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

View File

@ -385,15 +385,15 @@ static void _about_on_license(GtkWidget * widget, gpointer data);
void on_help_about(GtkWidget * widget, gpointer data)
{
Browser * browser = data;
static GtkWidget * window = NULL;
GtkWidget * window;
char const copyright[] = "Copyright (c) 2007 The DeforaOS Project";
#if GTK_CHECK_VERSION(2, 6, 0)
gsize cnt = 65536;
gchar * buf;
if(window != NULL)
if(browser->ab_window != NULL)
{
gtk_widget_show(window);
gtk_widget_show(browser->ab_window);
return;
}
if((buf = malloc(sizeof(*buf) * cnt)) == NULL)
@ -401,7 +401,8 @@ void on_help_about(GtkWidget * widget, gpointer data)
browser_error(browser, "malloc", 0);
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(
browser->window));
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 * button;
if(window != NULL)
if(browser->ab_window != NULL)
{
gtk_widget_show(window);
gtk_widget_show(browser->ab_window);
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_window_set_title(GTK_WINDOW(window), "About Browser");
gtk_window_set_transient_for(GTK_WINDOW(window), GTK_WINDOW(