From 27f3ebe1f24f7a2c2ac633122f0030a3eeb88b03 Mon Sep 17 00:00:00 2001 From: Pierre Pronchery Date: Tue, 1 May 2007 18:35:55 +0000 Subject: [PATCH] Fixed about window handling with multiple browser windows --- src/browser.c | 3 +++ src/browser.h | 2 ++ src/callbacks.c | 16 +++++++++------- 3 files changed, 14 insertions(+), 7 deletions(-) diff --git a/src/browser.c b/src/browser.c index 7dfb731..4b0baac 100644 --- a/src/browser.c +++ b/src/browser.c @@ -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++; diff --git a/src/browser.h b/src/browser.h index 4e01696..f3aa27f 100644 --- a/src/browser.h +++ b/src/browser.h @@ -118,6 +118,8 @@ typedef struct _Browser GtkWidget * pr_window; GtkWidget * pr_sort; GtkWidget * pr_hidden; + /* about */ + GtkWidget * ab_window; } Browser; diff --git a/src/callbacks.c b/src/callbacks.c index 250ec5a..66d1bb3 100644 --- a/src/callbacks.c +++ b/src/callbacks.c @@ -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(