(*) Only toggle checkboxes in setup type dlg on spacebar keypress.

(*) Make next buttons be default.
b=206783; r=ssu; sr=bryner


git-svn-id: svn://10.0.0.236/trunk@142972 18797224-902f-48f8-a5cc-f745e15eee43
This commit is contained in:
sgehani%netscape.com
2003-05-28 02:12:27 +00:00
parent 8496cdaa88
commit c85cf41ecb
4 changed files with 41 additions and 2 deletions

View File

@@ -26,9 +26,11 @@
#include "nsXInstaller.h"
#include "check_on.xpm"
#include "check_off.xpm"
#include <gdk/gdkkeysyms.h>
static nsSetupType *sCustomST; // cache a pointer to the custom setup type
static GtkWidget *sDescLong;
static gint sCurrRowSelected;
nsComponentsDlg::nsComponentsDlg() :
mMsg0(NULL),
@@ -348,8 +350,13 @@ nsComponentsDlg::Show(int aDirection)
currComp = currComp->GetNext();
}
// by default, first row selected upon Show()
sCurrRowSelected = 0;
gtk_signal_connect(GTK_OBJECT(list), "select_row",
GTK_SIGNAL_FUNC(RowSelected), NULL);
gtk_signal_connect(GTK_OBJECT(list), "key_press_event",
GTK_SIGNAL_FUNC(KeyPressed), NULL);
gtk_container_add(GTK_CONTAINER(scrollwin), list);
gtk_widget_show(list);
gtk_widget_show(scrollwin);
@@ -468,6 +475,28 @@ nsComponentsDlg::RowSelected(GtkWidget *aWidget, gint aRow, gint aColumn,
{
DUMP("RowSelected");
sCurrRowSelected = aRow;
// only toggle row selection state for clicks on the row
if (aColumn == -1 && !aEvent)
return;
ToggleRowSelection(aWidget, aRow);
}
void
nsComponentsDlg::KeyPressed(GtkWidget *aWidget, GdkEventKey *aEvent,
gpointer aData)
{
DUMP("KeyPressed");
if (aEvent->keyval == GDK_space)
ToggleRowSelection(aWidget, sCurrRowSelected);
}
void
nsComponentsDlg::ToggleRowSelection(GtkWidget *aWidget, gint aRow)
{
int numRows = 0, currRow = 0;
GtkStyle *style = NULL;
GdkBitmap *ch_mask = NULL;

View File

@@ -50,6 +50,9 @@ public:
static void RowSelected(GtkWidget *aWidget, gint aRow, gint aColumn,
GdkEventButton *aEvent, gpointer aData);
static void KeyPressed(GtkWidget *aWidget, GdkEventKey *aEvent,
gpointer aData);
static void ToggleRowSelection(GtkWidget *aEvent, gint aRow);
/*--------------------------------------------------------------------*
* INI Properties

View File

@@ -176,6 +176,9 @@ nsWelcomeDlg::Show(int aDirection)
if (gCtx->back)
gtk_widget_hide(gCtx->back);
GTK_WIDGET_SET_FLAGS(gCtx->next, GTK_CAN_DEFAULT);
gtk_widget_grab_default(gCtx->next);
if (aDirection == nsXInstallerDlg::BACKWARD_MOVE)
{
// change the button titles back to Back/Next

View File

@@ -312,6 +312,8 @@ nsXInstaller::DrawNavButtons()
gtk_container_add(GTK_CONTAINER(gCtx->back), gCtx->backLabel);
gtk_widget_show(gCtx->nextLabel);
gtk_widget_show(gCtx->backLabel);
GTK_WIDGET_SET_FLAGS(gCtx->next, GTK_CAN_DEFAULT);
gtk_widget_grab_default(gCtx->next);
navbtnhbox = gtk_hbox_new(TRUE, 10);
canvasvbox = gtk_vbox_new(TRUE, 10);
@@ -324,11 +326,11 @@ nsXInstaller::DrawNavButtons()
gtk_table_attach(GTK_TABLE(navbtntable), gCtx->back, 2, 3, 0, 1,
static_cast<GtkAttachOptions>(GTK_FILL | GTK_EXPAND),
static_cast<GtkAttachOptions>(GTK_FILL | GTK_EXPAND),
static_cast<GtkAttachOptions>(GTK_SHRINK),
5, 5);
gtk_table_attach(GTK_TABLE(navbtntable), gCtx->next, 3, 4, 0, 1,
static_cast<GtkAttachOptions>(GTK_FILL | GTK_EXPAND),
static_cast<GtkAttachOptions>(GTK_FILL | GTK_EXPAND),
static_cast<GtkAttachOptions>(GTK_SHRINK),
5, 5);
gtk_widget_show(navbtntable);
@@ -446,6 +448,8 @@ ErrorHandler(int aErr, const char* aErrMsg)
gtk_container_add(GTK_CONTAINER(GTK_DIALOG(sErrDlg)->vbox), label);
GTK_WIDGET_SET_FLAGS(okButton, GTK_CAN_DEFAULT);
gtk_widget_grab_default(okButton);
gtk_widget_show_all(sErrDlg);
return aErr;