Qt support for changing 'statuslines' dynamically

Turns out it was nearly as simple as I originally thought.
I just missed one significant detail the first time around.
This leaves DYNAMIC_STATUSLINES as conditionl but now enables
it by default.  Using 'O' to change 'statuslines' from 2 to 3
or vice versa now works for Qt as well as for curses and tty.
This commit is contained in:
PatR
2020-12-22 11:10:32 -08:00
parent 430edb5a74
commit 934808be0e
6 changed files with 19 additions and 21 deletions
+3 -2
View File
@@ -834,10 +834,11 @@ void NetHackQtBind::qt_outrip(winid wid, int how, time_t when)
void NetHackQtBind::qt_preference_update(const char *optname)
{
#ifdef DYNAMIC_STATUSLINES // leave disabled; redoStatus() doesn't work
#ifdef DYNAMIC_STATUSLINES // defined in qt_main.h
if (!strcmp(optname, "statuslines")) {
// delete and recreate status window
main->redoStatus();
// to toggle statuslines from 2 to 3 or vice versa
id_to_window[WIN_STATUS] = main->redoStatus();
}
#else
nhUse(optname);
+5 -3
View File
@@ -1180,14 +1180,14 @@ void NetHackQtMainWindow::layout()
}
}
#ifdef DYNAMIC_STATUSLINES // leave disabled; this doesn't work as intended
#ifdef DYNAMIC_STATUSLINES
// called when 'statuslines' changes from 2 to 3 or vice versa; simpler to
// destroy and recreate the status window than to adjust existing fields
void NetHackQtMainWindow::redoStatus()
NetHackQtWindow *NetHackQtMainWindow::redoStatus()
{
NetHackQtStatusWindow *oldstatus = this->status;
if (!oldstatus)
return; // not ready yet?
return NULL; // not ready yet?
this->status = new NetHackQtStatusWindow;
if (!qt_compact_mode)
@@ -1195,6 +1195,8 @@ void NetHackQtMainWindow::redoStatus()
delete oldstatus;
ShowIfReady();
return (NetHackQtWindow *) this->status;
}
#endif
+6 -1
View File
@@ -14,6 +14,11 @@
#include "qt_kde0.h"
#endif
// Allow changing 'statuslines:2' to 'statuslines:3' or vice versa
// while the game is running; deletes and re-creates the status window.
// [Used in qt_bind.cpp and qt_main.cpp, but not referenced in qt_stat.cpp.]
#define DYNAMIC_STATUSLINES
namespace nethack_qt_ {
class NetHackQtInvUsageWindow;
@@ -54,7 +59,7 @@ public:
void resizePaperDoll(bool); // ENHANCED_PAPERDOLL
#ifdef DYNAMIC_STATUSLINES
// called when 'statuslines' option has been changed
void redoStatus();
NetHackQtWindow *redoStatus();
#endif
public slots: