--- np2/x11/gtk2/gtk_menu.c	2011/01/15 18:43:13	1.18
+++ np2/x11/gtk2/gtk_menu.c	2011/12/17 18:43:07	1.23
@@ -241,6 +241,7 @@ static GtkRadioActionEntry f12key_entrie
 { "f12mouse", NULL, "F12 = _Mouse",     NULL, NULL, 0 },
 { "f12copy",  NULL, "F12 = Co_py",      NULL, NULL, 1 },
 { "f12stop",  NULL, "F12 = S_top",      NULL, NULL, 2 },
+{ "f12end",   NULL, "F12 = _End",       NULL, NULL, 7 },
 { "f12equal", NULL, "F12 = tenkey [=]", NULL, NULL, 4 },
 { "f12comma", NULL, "F12 = tenkey [,]", NULL, NULL, 3 },
 };
@@ -416,6 +417,7 @@ static const gchar *ui_info =
 "    \n"
 "    \n"
 "    \n"
+"    \n"
 "    \n"
 "    \n"
 "   \n"
@@ -576,8 +578,11 @@ cb_bmpsave(GtkAction *action, gpointer u
 	if (dialog == NULL)
 		goto end;
 
-	g_object_set(G_OBJECT(dialog), "show-hidden", TRUE, NULL);
-	gtk_file_chooser_set_select_multiple(GTK_FILE_CHOOSER(dialog), FALSE);
+	gtk_file_chooser_set_show_hidden(GTK_FILE_CHOOSER(dialog), TRUE);
+#if iGTK_MAJOR_VERSION >= 2 && GTK_MINOR_VERSION >= 8
+	gtk_file_chooser_set_do_overwrite_confirmation(GTK_FILE_CHOOSER(dialog),
+	    TRUE);
+#endif
 	if (strlen(bmpfilefolder) == 0) {
 		g_strlcpy(bmpfilefolder, modulefile, sizeof(bmpfilefolder));
 		file_cutname(bmpfilefolder);
@@ -609,6 +614,12 @@ cb_bmpsave(GtkAction *action, gpointer u
 	if (utf8) {
 		path = g_filename_from_utf8(utf8, -1, NULL, NULL, NULL);
 		if (path) {
+			gchar *ext = file_getext(path);
+			if (strlen(ext) != 3 || file_cmpname(ext, "bmp")) {
+				gchar *tmp = g_strjoin(".", path, "bmp", NULL);
+				g_free(path);
+				path = tmp;
+			}
 			file_cpyname(bmpfilefolder, path, sizeof(bmpfilefolder));
 			sysmng_update(SYS_UPDATEOSCFG);
 			fh = file_create(path);
@@ -647,8 +658,7 @@ cb_change_font(GtkAction *action, gpoint
 	if (dialog == NULL)
 		goto end;
 
-	g_object_set(G_OBJECT(dialog), "show-hidden", TRUE, NULL);
-	gtk_file_chooser_set_select_multiple(GTK_FILE_CHOOSER(dialog), FALSE);
+	gtk_file_chooser_set_show_hidden(GTK_FILE_CHOOSER(dialog), TRUE);
 	utf8 = g_filename_to_utf8(np2cfg.fontfile, -1, NULL, NULL, NULL);
 	if (utf8) {
 		gtk_file_chooser_set_filename(GTK_FILE_CHOOSER(dialog), utf8);
@@ -734,8 +744,7 @@ cb_diskopen(GtkAction *action, gpointer 
 	if (dialog == NULL)
 		goto end;
 
-	g_object_set(G_OBJECT(dialog), "show-hidden", TRUE, NULL);
-	gtk_file_chooser_set_select_multiple(GTK_FILE_CHOOSER(dialog), FALSE);
+	gtk_file_chooser_set_show_hidden(GTK_FILE_CHOOSER(dialog), TRUE);
 	utf8 = g_filename_to_utf8(fddfolder, -1, NULL, NULL, NULL);
 	if (utf8) {
 		gtk_file_chooser_set_filename(GTK_FILE_CHOOSER(dialog), utf8);
@@ -843,8 +852,7 @@ cb_ataopen(GtkAction *action, gpointer u
 	if (dialog == NULL)
 		goto end;
 
-	g_object_set(G_OBJECT(dialog), "show-hidden", TRUE, NULL);
-	gtk_file_chooser_set_select_multiple(GTK_FILE_CHOOSER(dialog), FALSE);
+	gtk_file_chooser_set_show_hidden(GTK_FILE_CHOOSER(dialog), TRUE);
 	utf8 = g_filename_to_utf8(hddfolder, -1, NULL, NULL, NULL);
 	if (utf8) {
 		gtk_file_chooser_set_filename(GTK_FILE_CHOOSER(dialog), utf8);
@@ -930,8 +938,7 @@ cb_atapiopen(GtkAction *action, gpointer
 	if (dialog == NULL)
 		goto end;
 
-	g_object_set(G_OBJECT(dialog), "show-hidden", TRUE, NULL);
-	gtk_file_chooser_set_select_multiple(GTK_FILE_CHOOSER(dialog), FALSE);
+	gtk_file_chooser_set_show_hidden(GTK_FILE_CHOOSER(dialog), TRUE);
 	utf8 = g_filename_to_utf8(hddfolder, -1, NULL, NULL, NULL);
 	if (utf8) {
 		gtk_file_chooser_set_filename(GTK_FILE_CHOOSER(dialog), utf8);
@@ -1031,8 +1038,11 @@ cb_newdisk(GtkAction *action, gpointer u
 	if (dialog == NULL)
 		goto end;
 
-	g_object_set(G_OBJECT(dialog), "show-hidden", TRUE, NULL);
-	gtk_file_chooser_set_select_multiple(GTK_FILE_CHOOSER(dialog), FALSE);
+	gtk_file_chooser_set_show_hidden(GTK_FILE_CHOOSER(dialog), TRUE);
+#if iGTK_MAJOR_VERSION >= 2 && GTK_MINOR_VERSION >= 8
+	gtk_file_chooser_set_do_overwrite_confirmation(GTK_FILE_CHOOSER(dialog),
+	    TRUE);
+#endif
 	if (strlen(fddfolder) == 0) {
 		g_strlcpy(fddfolder, modulefile, sizeof(fddfolder));
 		file_cutname(fddfolder);
@@ -1173,8 +1183,7 @@ cb_sasiopen(GtkAction *action, gpointer 
 	if (dialog == NULL)
 		goto end;
 
-	g_object_set(G_OBJECT(dialog), "show-hidden", TRUE, NULL);
-	gtk_file_chooser_set_select_multiple(GTK_FILE_CHOOSER(dialog), FALSE);
+	gtk_file_chooser_set_show_hidden(GTK_FILE_CHOOSER(dialog), TRUE);
 	utf8 = g_filename_to_utf8(hddfolder, -1, NULL, NULL, NULL);
 	if (utf8) {
 		gtk_file_chooser_set_filename(GTK_FILE_CHOOSER(dialog), utf8);