4159 In confirmation screen, when Back button is clicked, when you press Enter in other screens will not activate Next button by default
authorjedy@pampas
Mon, 15 Dec 2008 18:35:21 +0800
changeset 381 046e8cbea997
parent 380 38aa26a7abb0
child 382 5b2e81671a1a
4159 In confirmation screen, when Back button is clicked, when you press Enter in other screens will not activate Next button by default
usr/src/cmd/gui-install/src/callbacks.c
usr/src/cmd/gui-install/src/language-screen.c
--- a/usr/src/cmd/gui-install/src/callbacks.c	Fri Dec 12 12:11:41 2008 -0700
+++ b/usr/src/cmd/gui-install/src/callbacks.c	Mon Dec 15 18:35:21 2008 +0800
@@ -414,6 +414,7 @@
 					gtk_widget_hide(MainWindow.UsersWindow.userstoplevel);
 					gtk_widget_show(MainWindow.installbutton);
 					gtk_widget_set_sensitive(MainWindow.installbutton, TRUE);
+					gtk_widget_grab_default(MainWindow.installbutton);
 					gtk_label_set_label(GTK_LABEL(MainWindow.userlabel),
 						MainWindow.InactiveStageTitles[USER_SCREEN]);
 					break;
@@ -421,6 +422,7 @@
 					show_upgrade_screen(FALSE);
 					gtk_widget_show(MainWindow.upgradebutton);
 					gtk_widget_set_sensitive(MainWindow.upgradebutton, TRUE);
+					gtk_widget_grab_default(MainWindow.upgradebutton);
 					gtk_label_set_label(GTK_LABEL(MainWindow.disklabel),
 						MainWindow.InactiveStageTitles[DISK_SCREEN]);
 					break;
@@ -509,6 +511,7 @@
 					gtk_widget_set_sensitive(MainWindow.upgradebutton, FALSE);
 					break;
 			}
+			gtk_widget_grab_default(MainWindow.quitbutton);
 
 			gtk_widget_show(
 				MainWindow.FailureWindow.failurewindowtable);
@@ -541,6 +544,7 @@
 
 			gtk_widget_show(MainWindow.rebootbutton);
 			gtk_widget_set_sensitive(MainWindow.quitbutton, TRUE);
+			gtk_widget_grab_default(MainWindow.rebootbutton);
 			gtk_widget_show(MainWindow.FinishWindow.finishbox);
 			gtk_label_set_label(GTK_LABEL(MainWindow.screentitlelabel),
 				MainWindow.ScreenTitles[FINISH_SCREEN]);
@@ -592,6 +596,7 @@
 					break;
 			}
 			gtk_widget_show(MainWindow.nextbutton);
+			gtk_widget_grab_default(MainWindow.nextbutton);
 			break;
 		case INSTALLATION_SCREEN:
 			/*
--- a/usr/src/cmd/gui-install/src/language-screen.c	Fri Dec 12 12:11:41 2008 -0700
+++ b/usr/src/cmd/gui-install/src/language-screen.c	Mon Dec 15 18:35:21 2008 +0800
@@ -336,6 +336,20 @@
 	}
 }
 
+static gboolean
+on_treeview_key_press(GtkWidget *widget,
+			GdkEventKey *event,
+			gpointer user_data)
+{
+	if (event->keyval == GDK_Return) {
+		GtkWidget *toplevel = gtk_widget_get_toplevel(widget);
+
+		if (GTK_WIDGET_TOPLEVEL(toplevel))
+			gtk_window_activate_default(GTK_WINDOW(toplevel));
+	}
+	return (FALSE);
+}
+
 GtkWidget *
 language_screen_init(GladeXML *winxml)
 {
@@ -387,6 +401,10 @@
 	gtk_tree_view_append_column(GTK_TREE_VIEW(LanguageWindow.language_tree), col);
 	gtk_tree_view_set_headers_visible(GTK_TREE_VIEW(LanguageWindow.language_tree),
 			FALSE);
+	g_signal_connect(G_OBJECT(LanguageWindow.language_tree),
+			"key-press-event",
+			G_CALLBACK(on_treeview_key_press),
+			NULL);
 	language_init(LanguageWindow.language_tree);
 
 	gtk_widget_show_all(widget);