commit 65de310d8355ca8f31632bc9f1d4b776013d52f9
Author: Jiří Techet <techet@gmail.com>
Date:   Mon Feb 20 00:24:31 2012 +0100
Origin: vendor
Subject: Use new project preference open/close signals

diff --git a/gproject/src/gproject-main.c b/gproject/src/gproject-main.c
index 468f3bf..33f044b 100644
--- a/gproject/src/gproject-main.c
+++ b/gproject/src/gproject-main.c
@@ -32,7 +32,7 @@
 #include "gproject-sidebar.h"
 #include "gproject-menu.h"
 
-PLUGIN_VERSION_CHECK(211);
+PLUGIN_VERSION_CHECK(214);
 PLUGIN_SET_INFO(_("GProject"),
 	_("Glob-pattern-based project management plugin for Geany."),
 	VERSION,
@@ -43,6 +43,9 @@ GeanyData *geany_data;
 GeanyFunctions *geany_functions;
 
 
+static gint page_index = -1;
+
+
 void plugin_init(G_GNUC_UNUSED GeanyData * data);
 void plugin_cleanup(void);
 
@@ -94,18 +97,33 @@ static void on_build_start(GObject *obj, gpointer user_data)
 }
 
 
-static void on_project_dialog_create(G_GNUC_UNUSED GObject * obj, GtkWidget * notebook,
+static void on_project_dialog_open(G_GNUC_UNUSED GObject * obj, GtkWidget * notebook,
 		G_GNUC_UNUSED gpointer user_data)
 {
-	gprj_project_add_properties_tab(notebook);
+	if (g_prj && page_index == -1)
+		page_index = gprj_project_add_properties_tab(notebook);
 }
 
 
 static void on_project_dialog_confirmed(G_GNUC_UNUSED GObject * obj, GtkWidget * notebook,
 		G_GNUC_UNUSED gpointer user_data)
 {
-	gprj_project_read_properties_tab();
-	gprj_sidebar_update(TRUE);
+	if (g_prj)
+	{
+		gprj_project_read_properties_tab();
+		gprj_sidebar_update(TRUE);
+	}
+}
+
+
+static void on_project_dialog_close(G_GNUC_UNUSED GObject * obj, GtkWidget * notebook,
+		G_GNUC_UNUSED gpointer user_data)
+{
+	if (page_index != -1)
+	{
+		gtk_notebook_remove_page(GTK_NOTEBOOK(notebook), page_index);
+		page_index = -1;
+	}
 }
 
 
@@ -119,6 +137,7 @@ static void on_project_open(G_GNUC_UNUSED GObject * obj, GKeyFile * config,
 }
 
 
+
 static void on_project_close(G_GNUC_UNUSED GObject * obj, G_GNUC_UNUSED gpointer user_data)
 {
 	gprj_project_close();
@@ -149,8 +168,9 @@ PluginCallback plugin_callbacks[] = {
 	{"document-activate", (GCallback) & on_doc_activate, TRUE, NULL},
 	{"document-close", (GCallback) & on_doc_close, TRUE, NULL},
 	{"build-start", (GCallback) & on_build_start, TRUE, NULL},
-	{"project-dialog-create", (GCallback) & on_project_dialog_create, TRUE, NULL},
+	{"project-dialog-open", (GCallback) & on_project_dialog_open, TRUE, NULL},
 	{"project-dialog-confirmed", (GCallback) & on_project_dialog_confirmed, TRUE, NULL},
+	{"project-dialog-close", (GCallback) & on_project_dialog_close, TRUE, NULL},
 	{"project-open", (GCallback) & on_project_open, TRUE, NULL},
 	{"project-close", (GCallback) & on_project_close, TRUE, NULL},
 	{"project-save", (GCallback) & on_project_save, TRUE, NULL},
diff --git a/gproject/src/gproject-project.c b/gproject/src/gproject-project.c
index 38327d5..aa547cf 100644
--- a/gproject/src/gproject-project.c
+++ b/gproject/src/gproject-project.c
@@ -387,12 +387,13 @@ void gprj_project_read_properties_tab()
 }
 
 
-void gprj_project_add_properties_tab(GtkWidget *notebook)
+gint gprj_project_add_properties_tab(GtkWidget *notebook)
 {
 	GtkWidget *vbox, *hbox, *hbox1;
 	GtkWidget *table;
 	GtkWidget *label;
 	gchar *str;
+	gint page_index;
 
 	e = g_new0(PropertyDialogElements, 1);
 
@@ -456,7 +457,10 @@ void gprj_project_add_properties_tab(GtkWidget *notebook)
 	hbox = gtk_hbox_new(FALSE, 0);
 	gtk_box_pack_start(GTK_BOX(hbox), vbox, TRUE, TRUE, 6);
 
-	gtk_notebook_append_page(GTK_NOTEBOOK(notebook), hbox, label);
+	page_index = gtk_notebook_append_page(GTK_NOTEBOOK(notebook), hbox, label);
+	gtk_widget_show_all(notebook);
+
+	return page_index;
 }
 
 
diff --git a/gproject/src/gproject-project.h b/gproject/src/gproject-project.h
index 06d8185..9f44cf9 100644
--- a/gproject/src/gproject-project.h
+++ b/gproject/src/gproject-project.h
@@ -40,7 +40,7 @@ extern GPrj *g_prj;
 
 void gprj_project_open(GKeyFile * key_file);
 
-void gprj_project_add_properties_tab(GtkWidget *notebook);
+gint gprj_project_add_properties_tab(GtkWidget *notebook);
 
 void gprj_project_close(void);
 
