win->OnKey(kevent);
if (suppressNextKeyDown == PR_TRUE) suppressNextKeyDown = PR_FALSE; else win->OnKey(kevent);
gint handle_key_press_event(GtkObject *w, GdkEventKey* event, gpointer p){  nsKeyEvent kevent;  nsWidget *win = (nsWidget*)p;  if (win->focusWindow)    win = win->focusWindow;  // work around for annoying things.  if (event->keyval == GDK_Tab)    if (event->state & GDK_CONTROL_MASK)      if (event->state & GDK_MOD1_MASK)        return PR_FALSE;  // Don't pass shift, control and alt as key press events  if (event->keyval == GDK_Shift_L      || event->keyval == GDK_Shift_R      || event->keyval == GDK_Control_L      || event->keyval == GDK_Control_R)    return PR_TRUE;  NS_ADDREF(win);  //  // First, dispatch the Key event as a virtual key down event  //   but lie about where it came from and say it is from the  //   window that currently has focus inside our app...  //  InitKeyEvent(event, win, kevent, NS_KEY_DOWN);  win->OnKey(kevent);  //  // Second, dispatch the Key event as a key press event w/ a Unicode  //  character code.  Note we have to check for modifier keys, since  // gtk returns a character value for them  //  if (event->length) {    if (nsGtkIMEHelper::GetSingleton() && (!kevent.keyCode)) {      win->IMECommitEvent(event);    } else {      InitKeyPressEvent(event, win, kevent);      win->OnKey(kevent);    }  } else { // for Home/End/Up/Down/Left/Right/PageUp/PageDown key    InitKeyPressEvent(event, win, kevent);    win->OnKey(kevent);  }  NS_RELEASE(win);  if (w)  {    gtk_signal_emit_stop_by_name (GTK_OBJECT(w), "key_press_event");  }  return PR_TRUE;}