  
    auto y = option.rect.y();
    painter->translate(visualRect(model()->index(0, 0)).x() - indentation() - .5, -.5);
    for (int i = 0; i < header()->count(); ++i) {
      painter->translate(header()->sectionSize(i), 0);
      painter->drawLine(0, y, 0, y + option.rect.height());
    }
    painter->setPen(old_pen);
    painter->resetTransform();
  }
 
</s> remove   message_header_state = s.value("message_header_state_v2").toByteArray();
 </s> add   message_header_state = s.value("message_header_state_v3").toByteArray(); </s> remove   view->header()->setSectionsMovable(false);
 </s> add   // Must be called before setting any header parameters to avoid overriding
  restoreHeaderState(settings.message_header_state);

  view->header()->setSectionsMovable(true);
 </s> remove   messages_widget->restoreHeaderState(settings.message_header_state);
 </s> add 
    painter->translate(header()->sectionSize(header()->logicalIndex(i)), 0);
  
    auto y = option.rect.y();
    painter->translate(visualRect(model()->index(0, 0)).x() - indentation() - .5, -.5);
    for (int i = 0; i < header()->count(); ++i) {
    painter->translate(header()->sectionSize(header()->logicalIndex(i)), 0);
      painter->drawLine(0, y, 0, y + option.rect.height());
    }
    painter->setPen(old_pen);
    painter->resetTransform();
  }
keep keep keep keep replace keep keep keep keep keep
 cabana: make head section movable (#27971)

* set sections movable

* change setting key to v3

* add comment

* remove restorestate from MainWindow 
tools/cabana/messageswidget.cc