For Qt with 'popup_dialog' On, fix number entry when user types a digit (or '#') directly onto the dialog instead of clicking inside the Count box and then typing. Before, that first typed digit was starting out as selected, so typing the next digit replaced the selection instead of getting appended to the string of digits being constructed. Fixed by moving the relevant code to the KeyPress handler instead of re-executing the dialog. Also, if a keypress is just a modifier, ignore it. The next event should be the actual character. Prevents treating <shift> (and <caps lock>!) as useless dialog responses. Before this, attempting to type '#' to initiate a count wouldn't work because the <shift> part of shift+3 ended the dialog. Now '#' works (and is still optional; starting with a digit suffices).
37 lines
646 B
C++
37 lines
646 B
C++
// Copyright (c) Warwick Allison, 1999.
|
|
// Qt4 conversion copyright (c) Ray Chason, 2012-2014.
|
|
// NetHack may be freely redistributed. See license for details.
|
|
|
|
// qt_yndlg.h -- yes/no dialog
|
|
|
|
#ifndef QT4YNDLG_H
|
|
#define QT4YNDLG_H
|
|
|
|
namespace nethack_qt_ {
|
|
|
|
class NetHackQtYnDialog : QDialog {
|
|
Q_OBJECT
|
|
private:
|
|
QString question;
|
|
const char* choices;
|
|
char def;
|
|
char keypress;
|
|
bool allow_count;
|
|
QLineEdit *le;
|
|
|
|
protected:
|
|
virtual void keyPressEvent(QKeyEvent*);
|
|
|
|
private slots:
|
|
void doneItem(int);
|
|
|
|
public:
|
|
NetHackQtYnDialog(QWidget *,const QString&,const char*,char);
|
|
|
|
char Exec();
|
|
};
|
|
|
|
} // namespace nethack_qt_
|
|
|
|
#endif
|