Browse Source

cmCursesLongMessageForm: Factor out helper to draw message to form

Brad King 5 years ago
parent
commit
e9b36731e9

+ 11 - 8
Source/CursesDialog/cmCursesLongMessageForm.cxx

@@ -109,8 +109,6 @@ void cmCursesLongMessageForm::Render(int /*left*/, int /*top*/, int /*width*/,
     this->Form = nullptr;
     this->Form = nullptr;
   }
   }
 
 
-  const char* msg = this->Messages.c_str();
-
   if (this->Fields[0]) {
   if (this->Fields[0]) {
     free_field(this->Fields[0]);
     free_field(this->Fields[0]);
     this->Fields[0] = nullptr;
     this->Fields[0] = nullptr;
@@ -123,9 +121,18 @@ void cmCursesLongMessageForm::Render(int /*left*/, int /*top*/, int /*width*/,
   this->Form = new_form(this->Fields);
   this->Form = new_form(this->Fields);
   post_form(this->Form);
   post_form(this->Form);
 
 
-  int i = 0;
   form_driver(this->Form, REQ_BEG_FIELD);
   form_driver(this->Form, REQ_BEG_FIELD);
-  while (msg[i] != '\0' && i < 60000) {
+  this->DrawMessage(this->Messages.c_str());
+
+  this->UpdateStatusBar();
+  touchwin(stdscr);
+  refresh();
+}
+
+void cmCursesLongMessageForm::DrawMessage(const char* msg) const
+{
+  int i = 0;
+  while (msg[i] != '\0' && i < MAX_CONTENT_SIZE) {
     if (msg[i] == '\n' && msg[i + 1] != '\0') {
     if (msg[i] == '\n' && msg[i + 1] != '\0') {
       form_driver(this->Form, REQ_NEW_LINE);
       form_driver(this->Form, REQ_NEW_LINE);
     } else {
     } else {
@@ -138,10 +145,6 @@ void cmCursesLongMessageForm::Render(int /*left*/, int /*top*/, int /*width*/,
   } else {
   } else {
     form_driver(this->Form, REQ_BEG_FIELD);
     form_driver(this->Form, REQ_BEG_FIELD);
   }
   }
-
-  this->UpdateStatusBar();
-  touchwin(stdscr);
-  refresh();
 }
 }
 
 
 void cmCursesLongMessageForm::HandleInput()
 void cmCursesLongMessageForm::HandleInput()

+ 4 - 0
Source/CursesDialog/cmCursesLongMessageForm.h

@@ -47,6 +47,10 @@ public:
   void UpdateStatusBar() override;
   void UpdateStatusBar() override;
 
 
 protected:
 protected:
+  static constexpr int MAX_CONTENT_SIZE = 60000;
+
+  void DrawMessage(const char* msg) const;
+
   std::string Messages;
   std::string Messages;
   std::string Title;
   std::string Title;
   ScrollBehavior Scrolling;
   ScrollBehavior Scrolling;