ccmake: Correctly display edit mode and associated keys

Specific widgets can implement `PrintKeys` but their effects were hidden
by the main widget `PrintKeys`.  Fix this to give the user a better hint
about the edit mode status.

Closes: #13757
This commit is contained in:
Sylvain Joubert 2016-11-15 11:55:03 +01:00 committed by Brad King
parent a9562eac3e
commit 5ca4abb27f
2 changed files with 48 additions and 51 deletions

View File

@ -347,14 +347,8 @@ void cmCursesMainForm::PrintKeys(int process /* = 0 */)
cw = reinterpret_cast<cmCursesWidget*>(field_userptr(currentField));
}
if (cw) {
cw->PrintKeys();
}
// {
// }
// else
// {
char fmt_s[] = "%s";
if (cw == CM_NULLPTR || !cw->PrintKeys()) {
char firstLine[512] = "";
char secondLine[512] = "";
char thirdLine[512] = "";
@ -383,8 +377,8 @@ void cmCursesMainForm::PrintKeys(int process /* = 0 */)
}
curses_move(y - 4, 0);
char fmt_s[] = "%s";
char fmt[512] = "Press [enter] to edit option Press [d] to delete an entry";
char fmt[512] =
"Press [enter] to edit option Press [d] to delete an entry";
if (process) {
strcpy(fmt, " ");
}
@ -395,13 +389,14 @@ void cmCursesMainForm::PrintKeys(int process /* = 0 */)
printw(fmt_s, secondLine);
curses_move(y - 1, 0);
printw(fmt_s, thirdLine);
}
if (cw) {
sprintf(firstLine, "Page %d of %d", cw->GetPage(), this->NumberOfPages);
curses_move(0, 65 - static_cast<unsigned int>(strlen(firstLine)) - 1);
printw(fmt_s, firstLine);
char pageLine[512] = "";
sprintf(pageLine, "Page %d of %d", cw->GetPage(), this->NumberOfPages);
curses_move(0, 65 - static_cast<unsigned int>(strlen(pageLine)) - 1);
printw(fmt_s, pageLine);
}
// }
pos_form_cursor(this->Form);
}

View File

@ -202,7 +202,9 @@ bool cmCursesStringWidget::PrintKeys()
printw(fmt_s, firstLine);
curses_move(y - 3, 0);
printw(fmt_s, "Editing option, press [enter] to leave edit.");
printw(fmt_s, "Editing option, press [enter] to confirm");
curses_move(y - 2, 0);
printw(fmt_s, " press [esc] to cancel");
return true;
}
return false;