-NHDT-Branch: NetHack-3.7 $:$NHDT-Revision: 1.423 $ $NHDT-Date: 1609977590 2021/01/06 23:59:50 $
+NHDT-Branch: NetHack-3.7 $:$NHDT-Revision: 1.424 $ $NHDT-Date: 1610098651 2021/01/08 09:37:31 $
General Fixes and Modified Features
-----------------------------------
for instance), clicking on [Search], entering a search target in the
resulting popup and clicking on [Okay] or typing <return>, the text
window got pushed underneath the main window so seemed to go away
-Qt+OSX: fix control key
+Qt+OSX: fix control key (fixed all except for ^V); handle ^V as a shortcut key
Qt+OSX: rename menu entry "nethack->Preferences..." for invoking nethack's
'O' command to "Game->Run-time options" and entry "Game->Qt settings"
for making persistent Qt customizations to "nethack->Preferences..."
is popped up gets ignored. It should at least close the popup like
ESC and maybe also initiate quitting.
-On the map, ^V is a dead key (at least on OSX; all other ASCII control
-characters from ^A through ^U, ^W through ^Z, and ^[, ^\, ^], ^^, ^_
-work; no attempt to have ^@ generate NUL has been made).
-
Map column #0, which the core reserves for its own purposes and isn't
intended to be displayed, is displayed (as blank terrain).
#include "qt_pre.h"
#include <QtGui/QtGui>
+#include <QtWidgets/QShortcut>
+
#if QT_VERSION >= 0x050000
#include <QtWidgets/QtWidgets>
#endif
* setMenuRole() can be used to override this behavior.
*/
#endif
+
+#ifdef CTRL_V_HACK
+ // NetHackQtBind::notify() sees all control characters except for ^V
+ QShortcut *c_V = new QShortcut(QKeySequence(Qt::CTRL + Qt::Key_V), this);
+ connect(c_V, &QShortcut::activated, this, &NetHackQtMainWindow::CtrlV);
+#endif
+
QMenu* game=new QMenu;
QMenu* apparel=new QMenu;
QMenu* act1=new QMenu;
}
}
+#ifdef CTRL_V_HACK
+#ifndef C
+#define C(c) (0x1f & (c))
+#endif
+
+// called when ^V is typed while the main window has keyboard focus;
+// all other control characters go through NetHackQtBind::notify()
+void NetHackQtMainWindow::CtrlV()
+{
+ static const char cV[] = { C('V'), '\0' };
+ doKeys(cV);
+}
+#endif
+
// add a toolbar button to invoke command 'name' via function '(*func)()'
void NetHackQtMainWindow::AddToolButton(QToolBar *toolbar, QSignalMapper *sm,
const char *name, int NDECL((*func)),
// [Used in qt_bind.cpp and qt_main.cpp, but not referenced in qt_stat.cpp.]
#define DYNAMIC_STATUSLINES
+// NetHackQtBind::notify() doesn't see ^V on OSX
+#ifdef MACOSX
+#define CTRL_V_HACK
+#endif
+
namespace nethack_qt_ {
class NetHackQtInvUsageWindow;
void zoomMap();
void raiseMessages();
void raiseStatus();
+#ifdef CTRL_V_HACK
+ void CtrlV();
+#endif
private:
void ShowIfReady();