Commit d93c109b authored by Seblu's avatar Seblu
Browse files

Fix regression sur cmd_draw

parent 617152fe
Loading
Loading
Loading
Loading
+12 −3
Original line number Diff line number Diff line
@@ -29,6 +29,12 @@ void Screen::init() {
}

void Screen::create_windows() {
  // Check screen size
  if (LINES < 6 || COLS < 3) {
    std::cerr << "Screen is too small." << std::endl;
    exit(ERR_SCREENSZ);
  }

  noecho();
  clear();
  refresh();
@@ -138,7 +144,7 @@ void Screen::run() {
      cmd_buf_off_ = strlen(cmd_buffer_);
      cmd_draw();
      break;
    case 10:
    case KEY_RETURN:
      // save buffer in history
      H.add(cmd_buffer_);
      // send buffer
@@ -165,6 +171,9 @@ void Screen::run() {
    case KEY_RESIZE:
      create_windows();
      break;
    case KEY_EOF:
      // save history
      return;
    default:
      if (!isprint(key)) break;
      if (add_char(key, cmd_buffer_, cmd_buf_off_, CMD_BUFFER_SIZE))
@@ -183,8 +192,8 @@ void Screen::cmd_draw() {
  wmove(cmd_, 1, 1);

  // check cur pos is in screen
  if ((ssize_t) cmd_buf_off_ > (ssize_t) cmd_win_off_ + COLS - 3)
    cmd_win_off_ = cmd_buf_off_ - COLS - 1;
  if (cmd_buf_off_ + 1 > (size_t) COLS - 2 + cmd_win_off_)
    cmd_win_off_ = cmd_buf_off_ + 1 - (COLS - 2) ;
  else if (cmd_buf_off_ < cmd_win_off_)
    cmd_win_off_ = cmd_buf_off_;

+3 −0
Original line number Diff line number Diff line
@@ -5,6 +5,9 @@

#define CMD_BUFFER_SIZE 512

#define KEY_RETURN 10
#define KEY_EOF 4

class Screen {
public:
  Screen();
+1 −0
Original line number Diff line number Diff line
@@ -27,6 +27,7 @@ enum {
  ERR_NET = 4,
  ERR_PROTO = 5,
  ERR_AUTH = 6,
  ERR_SCREENSZ = 7,
  ERR_NOMEM = 41,
  ERR_UNKNOWN = 42
};