-NHDT-Branch: NetHack-3.7 $:$NHDT-Revision: 1.366 $ $NHDT-Date: 1606504240 2020/11/27 19:10:40 $
+NHDT-Branch: NetHack-3.7 $:$NHDT-Revision: 1.367 $ $NHDT-Date: 1606697932 2020/11/30 00:58:52 $
General Fixes and Modified Features
-----------------------------------
saved game selection widget
Qt: don't get stuck in a loop after choosing "play" while the character name
field is empty in the character selection widget
+Qt: when a new message is issued, pan the message window to its left edge if
+ player panned it horizontally then didn't manually scroll it back
Qt: {maybe just Qt+OSX:} when viewing a text window ('V' to look at 'history'
for instance), clicking on [Search], entering a search target in the
resulting popup and clicking on [Okay] or typing <return>, the text
namespace nethack_qt_ {
NetHackQtMessageWindow::NetHackQtMessageWindow() :
- list(new QListWidget())
+ list(new QListWidget()),
+ scrollarea(new QScrollArea())
{
list->setFocusPolicy(Qt::NoFocus);
+ scrollarea->setFocusPolicy(Qt::NoFocus);
+ scrollarea->takeWidget();
::iflags.window_inited = 1;
map = 0;
currgetmsg = 0;
delete list;
}
-QWidget* NetHackQtMessageWindow::Widget() { return list; }
+QWidget* NetHackQtMessageWindow::Widget() {
+ return list;
+}
void NetHackQtMessageWindow::setMap(NetHackQtMapWindow2* m)
{
item->setBackground(bg);
}
}
+#else
+ nhUse(attr);
#endif
if (list->count() >= (int) ::iflags.msg_history)
// selects most recent message, which causes it to be highlighted
list->setCurrentRow(list->count() - 1);
+ // if message window has been scrolled right, force back to left edge
+ QScrollBar *sb = list->horizontalScrollBar();
+ if (sb && sb->value() > 0) {
+ sb->setValue(0);
+ this->viewport()->update();
+ }
+
if (map)
map->putMessage(attr, text2);
}
class NetHackQtMapWindow2;
-class NetHackQtMessageWindow : QObject, public NetHackQtWindow {
+class NetHackQtMessageWindow : QScrollArea, public NetHackQtWindow {
Q_OBJECT
public:
NetHackQtMessageWindow();
void AddToStr(const char *answerbuf);
private:
- QListWidget* list;
- bool changed;
+ QListWidget *list;
+ QScrollArea *scrollarea;
+ bool changed;
int currgetmsg;
NetHackQtMapWindow2* map;