    window_state = s.value("window_state").toByteArray();
    geometry = s.value("geometry").toByteArray();
    video_splitter_state = s.value("video_splitter_state").toByteArray();
    recent_files = s.value("recent_files").toStringList();
    message_header_state = s.value("message_header_state_v2").toByteArray();
    chart_series_type = s.value("chart_series_type", 0).toInt();
    theme = s.value("theme", 0).toInt();
    sparkline_range = s.value("sparkline_range", 15).toInt();
    multiple_lines_bytes = s.value("multiple_lines_bytes", true).toBool();
    log_livestream = s.value("log_livestream", true).toBool();
 
</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     painter->translate(header()->sectionSize(i), 0);
 </s> add     painter->translate(header()->sectionSize(header()->logicalIndex(i)), 0); </s> remove   messages_widget->restoreHeaderState(settings.message_header_state);
 </s> add 
  message_header_state = s.value("message_header_state_v3").toByteArray();
    window_state = s.value("window_state").toByteArray();
    geometry = s.value("geometry").toByteArray();
    video_splitter_state = s.value("video_splitter_state").toByteArray();
    recent_files = s.value("recent_files").toStringList();
  message_header_state = s.value("message_header_state_v3").toByteArray();
    chart_series_type = s.value("chart_series_type", 0).toInt();
    theme = s.value("theme", 0).toInt();
    sparkline_range = s.value("sparkline_range", 15).toInt();
    multiple_lines_bytes = s.value("multiple_lines_bytes", true).toBool();
    log_livestream = s.value("log_livestream", true).toBool();
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/settings.cc