message: Change filemode text display
  Untracked files: header = 'Filemode 100644'
  Modified files: header = 'Filemode changed 100644 -> 100755'
  Improve the header painterevent for filemode display: set QLabel font and textcolor.
  Reenable the header CheckBox (modified files, filemode change only) for smoother UI.
diff: @@ -756,16 +756,17 @@ public:
  });
  // Show file mode diff
  - if (filemode) {
  + if (filemode || header.isEmpty()) {
  mOldMode = diff.old_mode(index);
  mNewMode = diff.new_mode(index);
  - if (mOldMode != mNewMode) {
  - QString header = "Filemode changed";
  + if ((mOldMode != mNewMode) && (mNewMode)) {
  + QString header = "Filemode";
  QString escaped = header.trimmed().toHtmlEscaped();
  mLabel->setText(kHunkFmt.arg(escaped));
  // Hide buttons
  + if (filemode) {
  edit->setVisible(false);
  if (discard)
  discard->setVisible(false);
  @@ -773,6 +774,7 @@ public:
  }
  }
  }
  + }
  QCheckBox *check() const { return mCheck; }
  @@ -793,16 +795,25 @@ public:
  void paintEvent(QPaintEvent *event) override
  {
  if (mOldMode != mNewMode) {
  + QFont font = this->font();
  + font.setBold(true);
  +
  + QColor color = mLabel->palette().text().color();
  +
  QPainter painter(this);
  painter.setRenderHint(QPainter::Antialiasing);
  + painter.setFont(font);
  + painter.setPen(color);
  QRect rect = this->rect();
  - QFontMetrics fm = fontMetrics();
  + QFontMetrics fm = painter.fontMetrics();
  + rect.adjust(mLabel->geometry().right(), 0, -mButtons->geometry().width(), 0);
  + rect.adjust(fm.width(" "), 0, 0, 0);
  +
  + if (mOldMode) {
  // Draw old mode
  - rect.adjust(mLabel->geometry().right(), 0, -8, -1);
  - rect.adjust(8, 0, -mButtons->geometry().width(), 0);
  - QString oMode = fm.elidedText(QString::number(mOldMode, 8), Qt::ElideLeft, rect.width());
  + QString oMode = fm.elidedText("changed " + QString::number(mOldMode, 8), Qt::ElideLeft, rect.width());
  painter.drawText(rect, Qt::AlignLeft | Qt::AlignVCenter, oMode);
  rect.adjust(fm.boundingRect(oMode).width(), 0, 0, 0);
  @@ -821,6 +832,7 @@ public:
  painter.setPen(pen);
  painter.drawPath(path);
  rect.adjust(kArrowWidth, 0, 0, 0);
  + }
  // Draw new mode
  QString nMode = fm.elidedText(QString::number(mNewMode, 8), Qt::ElideLeft, rect.width());
  @@ -2054,7 +2066,7 @@ public:
  // Respond to check box click.
  QCheckBox *check = hunk->header()->check();
  - check->setVisible(diff.isStatusDiff() && !submodule && !patch.isConflicted() && !filemode);
  + check->setVisible(diff.isStatusDiff() && !submodule && !patch.isConflicted());
  connect(check, &QCheckBox::clicked, this, &FileWidget::stageHunks);
  // Respond to editor diagnostic signal.
  