diff --git a/outdated/win/Qt3/qt3_win.cpp b/outdated/win/Qt3/qt3_win.cpp
index f48c0d211..30b23370b 100644
--- a/outdated/win/Qt3/qt3_win.cpp
+++ b/outdated/win/Qt3/qt3_win.cpp
@@ -1,4 +1,4 @@
-// NetHack 3.6 qt_win.cpp $NHDT-Date: 1575917720 2019/12/09 18:55:20 $ $NHDT-Branch: NetHack-3.7 $:$NHDT-Revision: 1.0 $
+// NetHack 3.6 qt_win.cpp $NHDT-Date: 1596404695 2020/08/02 21:44:55 $ $NHDT-Branch: NetHack-3.7 $:$NHDT-Revision: 1.91 $
// Copyright (c) Warwick Allison, 1999.
// NetHack may be freely redistributed. See license for details.
@@ -146,23 +146,44 @@ static const char nh_attribution[] = "
NetHack"
static QString
aboutMsg()
{
+ char vbuf[BUFSZ];
QString msg;
msg.sprintf(
- "Qt NetHack is a version of NetHack built\n"
+ // format
+ "Qt NetHack is a version of NetHack\n"
+ "built using" // no newline
#ifdef KDE
- "using KDE and the Qt GUI toolkit.\n"
+ " KDE and" // ditto
+#endif
+ " the Qt %d GUI toolkit.\n"
+ "\nThis is NetHack %s%s.\n"
+ "\nNetHack's Qt interface originally developed by Warwick Allison.\n"
+ "\n"
+#if 0
+ "Homepage:\n http://trolls.troll.no/warwick/nethack/\n" //obsolete
+#endif
+#ifdef KDE
+ "KDE:\n https://kde.org/\n"
+#endif
+#if 1
+ "Qt:\n https://qt.io/\n"
#else
- "using the Qt GUI toolkit.\n"
+ "Qt:\n http://www.troll.no/\n" // obsolete
#endif
- "This is version %d.%d.%d\n\n"
- "Homepage:\n http://trolls.troll.no/warwick/nethack/\n\n"
-#ifdef KDE
- "KDE:\n http://www.kde.org\n"
+ "NetHack:\n %s\n",
+ // arguments
+#ifdef QT_VERSION_MAJOR
+ QT_VERSION_MAJOR,
+#else
+ 3, // Qt version macro should exist; if not, assume Qt3
#endif
- "Qt:\n http://www.troll.no",
- VERSION_MAJOR,
- VERSION_MINOR,
- PATCHLEVEL);
+ version_string(vbuf), /* nethack version */
+#ifdef QT_VERSION_STR
+ " with Qt " QT_VERSION_STR,
+#else
+ "",
+#endif
+ DEVTEAM_URL);
return msg;
}
diff --git a/win/Qt/qt_menu.cpp b/win/Qt/qt_menu.cpp
index 2f4d41762..aad4d5885 100644
--- a/win/Qt/qt_menu.cpp
+++ b/win/Qt/qt_menu.cpp
@@ -91,6 +91,11 @@ NetHackQtMenuWindow::NetHackQtMenuWindow(QWidget *parent) :
prompt(0),
counting(false)
{
+ // setFont() was in SelectMenu(), in time to be rendered but too late
+ // when measuring the width and height that will be needed
+ QFont tablefont(qt_settings->normalFixedFont());
+ table->setFont(tablefont);
+
QGridLayout *grid = new QGridLayout();
table->setColumnCount(5);
table->setFrameStyle(QFrame::Panel|QFrame::Sunken);
@@ -134,7 +139,8 @@ NetHackQtMenuWindow::NetHackQtMenuWindow(QWidget *parent) :
grid->setRowStretch(2, 1);
setFocusPolicy(Qt::StrongFocus);
table->setFocusPolicy(Qt::NoFocus);
- connect(table, SIGNAL(cellClicked(int,int)), this, SLOT(cellToggleSelect(int,int)));
+ connect(table, SIGNAL(cellClicked(int,int)),
+ this, SLOT(cellToggleSelect(int,int)));
setLayout(grid);
}
@@ -214,9 +220,6 @@ void NetHackQtMenuWindow::EndMenu(const QString& p)
int NetHackQtMenuWindow::SelectMenu(int h, MENU_ITEM_P **menu_list)
{
- QFont tablefont(qt_settings->normalFixedFont());
- table->setFont(tablefont);
-
table->setRowCount(itemcount);
how=h;
@@ -243,10 +246,18 @@ int NetHackQtMenuWindow::SelectMenu(int h, MENU_ITEM_P **menu_list)
std::vector col_widths;
for (std::size_t i = 0; i < (size_t) itemlist.size(); ++i) {
QStringList columns = itemlist[i].str.split("\t");
- if (!itemlist[i].Selectable() && columns.size() == 1)
- {
- // Nonselectable line with no column dividers
+ if (!itemlist[i].Selectable() && columns.size() == 1) {
+ // Nonselectable line with no column dividers.
// Assume this is a section header
+ // or ordinary text (^X feedback, for instance) rendered in
+ // a menu because tty's paginated menus can be used to go
+ // backward, unlike text windows which can only go forward.
+ QTableWidgetItem *twi = table->item(i, 4);
+ if (twi) {
+ QString text = twi->text();
+#define MENU_WIDTH_SLOP 20 /* this should not be necessary */
+ WidenColumn(4, fm.width(text) + MENU_WIDTH_SLOP);
+ }
continue;
}
for (std::size_t j = 0U; j < (size_t) columns.size(); ++j) {