Fix header content size when sorting is disabled

Authored by astan on Feb 2 2017, 2:29 PM.

Description

Fix header content size when sorting is disabled

Summary: Instead of always adding space for the sorting indicator in item view headers, only add it if sorting is enabled. Without this fix, operations such as QTreeView::resizeColumnToContents(..) will not result in a snug fit when the header section is wider than all items in the column.

Test Plan:

#include <QApplication>
#include <QTreeView>
#include <QStandardItemModel>
#include <QStandardItem>

int main(int argc, char *argv[])
{
    QApplication app(argc, argv);

    // Test model
    QStandardItemModel model(3, 2);
    model.setHorizontalHeaderLabels({ "Header 1", "Header 2" });
    for (int row = 0; row < 3; ++row) {
        for (int column = 0; column < 2; ++column) {
            model.setItem(row, column, new QStandardItem("Foo"));
        }
    }

    // View with sorting disabled
    QTreeView view;
    view.setWindowTitle("Sorting Disabled");
    view.setModel(&model);
    view.show();
    view.resizeColumnToContents(0);

    // View with sorting enabled
    QTreeView viewWithSorting;
    viewWithSorting.setWindowTitle("Sorting Enabled");
    viewWithSorting.setModel(&model);
    viewWithSorting.setSortingEnabled(true);
    viewWithSorting.show();
    viewWithSorting.resizeColumnToContents(0);

    return app.exec();
}

Notice how before applying this fix, there's space reserved for the sorting indicator even on the QTreeView that has sorting disabled.

Before the fix:

After the fix:

Reviewers: Breeze, hpereiradacosta

Reviewed By: hpereiradacosta

Subscribers: hpereiradacosta, cfeck, plasma-devel

Tags: Plasma

Differential Revision: https://phabricator.kde.org/D4406

Details