]> cloud.milkyroute.net Git - dolphin.git/blobdiff - src/dolphindetailsview.cpp
Fix issue that the columns "Link Destination" and "Path" are shown outside the visibl...
[dolphin.git] / src / dolphindetailsview.cpp
index 130c9e9b37c31bbc7e09ffedc0e63f6091b0254a..961bd7872784d9d560a9535989078dd8ddb7326b 100644 (file)
@@ -20,7 +20,7 @@
 
 #include "dolphindetailsview.h"
 
-#include "additionalinfomanager.h"
+#include "additionalinfoaccessor.h"
 #include "dolphinmodel.h"
 #include "dolphinviewcontroller.h"
 #include "dolphinfileitemdelegate.h"
@@ -992,7 +992,7 @@ void DolphinDetailsView::updateDecorationSize(bool showPreview)
 
 KFileItemDelegate::Information DolphinDetailsView::infoForColumn(int columnIndex) const
 {
-    return AdditionalInfoManager::instance().keyForColumn(columnIndex);
+    return AdditionalInfoAccessor::instance().keyForColumn(columnIndex);
 }
 
 void DolphinDetailsView::resizeColumns()
@@ -1006,16 +1006,30 @@ void DolphinDetailsView::resizeColumns()
     QHeaderView* headerView = header();
     QFontMetrics fontMetrics(viewport()->font());
 
+    // Calculate the required with for each column and store it in columnWidth[]
     int columnWidth[DolphinModel::ExtraColumnCount];
     const int defaultWidth = fontMetrics.width("xxxxxxxxxx");
+
     for (int i = 0; i < DolphinModel::ExtraColumnCount; ++i) {
-        columnWidth[i] = defaultWidth;
+        const int logicalIndex = headerView->logicalIndex(i);
+        const QString headline = model()->headerData(logicalIndex, Qt::Horizontal).toString();
+        const int headlineWidth = fontMetrics.width(headline);
+
+        columnWidth[i] = qMax(defaultWidth, headlineWidth);
+    }
+
+    const int defaultSizeWidth = fontMetrics.width("00000 Items");
+    if (defaultSizeWidth > columnWidth[DolphinModel::Size]) {
+        columnWidth[DolphinModel::Size] = defaultSizeWidth;
+    }
+
+    const int defaultTimeWidth = fontMetrics.width("0000-00-00 00:00");
+    if (defaultTimeWidth > columnWidth[DolphinModel::ModifiedTime]) {
+        columnWidth[DolphinModel::ModifiedTime] = defaultTimeWidth;
     }
-    columnWidth[DolphinModel::Size] = fontMetrics.width("00000 Items");
-    columnWidth[DolphinModel::ModifiedTime] = fontMetrics.width("0000-00-00 00:00");
 
     int requiredWidth = 0;
-    for (int i = KDirModel::Size; i <= KDirModel::Type; ++i) {
+    for (int i = KDirModel::Size; i < DolphinModel::ExtraColumnCount; ++i) {
         if (!isColumnHidden(i)) {
             columnWidth[i] += 20; // provide a default gap
             requiredWidth += columnWidth[i];
@@ -1023,7 +1037,7 @@ void DolphinDetailsView::resizeColumns()
         }
     }
 
-    // resize the name column in a way that the whole available width is used
+    // Resize the name column in a way that the whole available width is used
     columnWidth[KDirModel::Name] = viewport()->width() - requiredWidth;
 
     const int minNameWidth = 300;