summaryrefslogtreecommitdiffstats
path: root/Source/CursesDialog/cmCursesForm.cxx
diff options
context:
space:
mode:
authorDuncan Ogilvie <mr.exodia.tpodt@gmail.com>2022-01-14 16:30:04 (GMT)
committerBrad King <brad.king@kitware.com>2022-01-18 21:35:10 (GMT)
commitb97c12babbc87324b8005cf7e81640e1f3c0ecf6 (patch)
tree78d0c9be0754b219b4d07e15ff5c64f6ba0889e7 /Source/CursesDialog/cmCursesForm.cxx
parentbf11dab49d4155c0c58e1048ee0ab082b692d5db (diff)
downloadCMake-b97c12babbc87324b8005cf7e81640e1f3c0ecf6.zip
CMake-b97c12babbc87324b8005cf7e81640e1f3c0ecf6.tar.gz
CMake-b97c12babbc87324b8005cf7e81640e1f3c0ecf6.tar.bz2
ccmake: Refactor resizing logic into cmCursesForm
Diffstat (limited to 'Source/CursesDialog/cmCursesForm.cxx')
-rw-r--r--Source/CursesDialog/cmCursesForm.cxx22
1 files changed, 22 insertions, 0 deletions
diff --git a/Source/CursesDialog/cmCursesForm.cxx b/Source/CursesDialog/cmCursesForm.cxx
index bd65c4a..0c32964 100644
--- a/Source/CursesDialog/cmCursesForm.cxx
+++ b/Source/CursesDialog/cmCursesForm.cxx
@@ -2,6 +2,8 @@
file Copyright.txt or https://cmake.org/licensing for details. */
#include "cmCursesForm.h"
+#include <unistd.h>
+
cmsys::ofstream cmCursesForm::DebugFile;
bool cmCursesForm::Debug = false;
@@ -43,3 +45,23 @@ void cmCursesForm::LogMessage(const char* msg)
cmCursesForm::DebugFile << msg << std::endl;
}
+
+void cmCursesForm::HandleResize()
+{
+ endwin();
+ if (initscr() == nullptr) {
+ static const char errmsg[] = "Error: ncurses initialization failed\n";
+ auto r = write(STDERR_FILENO, errmsg, sizeof(errmsg) - 1);
+ static_cast<void>(r);
+ exit(1);
+ }
+ noecho(); /* Echo off */
+ cbreak(); /* nl- or cr not needed */
+ keypad(stdscr, true); /* Use key symbols as KEY_DOWN */
+ refresh();
+ int x;
+ int y;
+ getmaxyx(stdscr, y, x);
+ this->Render(1, 1, x, y);
+ this->UpdateStatusBar();
+}