diff --git a/kdeui/itemviews/kcategorizedview.cpp b/kdeui/itemviews/kcategorizedview.cpp
index 5e33861..3250982 100644
--- a/kdeui/itemviews/kcategorizedview.cpp
+++ b/kdeui/itemviews/kcategorizedview.cpp
@@ -1351,7 +1351,9 @@ void KCategorizedView::rowsAboutToBeRemoved(const QModelIndex &parent,
 
 void KCategorizedView::updateGeometries()
 {
-    const int oldVerticalOffset = verticalOffset();
+   const int oldVerticalOffset = verticalOffset();
+    const int rowCount = d->proxyModel->rowCount();
+    const int colCount = d->proxyModel->columnCount();
 
     //BEGIN bugs 213068, 287847 ------------------------------------------------------------
     /*
@@ -1364,23 +1366,14 @@ void KCategorizedView::updateGeometries()
      * So we prevent QListView from having an own opinion on the scrollbar visibility by
      * fixing it before calling the baseclass QListView::updateGeometries() and restoring the policy afterwards
      */
-    const Qt::ScrollBarPolicy verticalP = verticalScrollBarPolicy(), horizontalP = horizontalScrollBarPolicy();
-    setVerticalScrollBarPolicy(verticalScrollBar()->isVisibleTo(this) ? Qt::ScrollBarAlwaysOn : Qt::ScrollBarAlwaysOff);
-    setHorizontalScrollBarPolicy(horizontalScrollBar()->isVisibleTo(this) ? Qt::ScrollBarAlwaysOn : Qt::ScrollBarAlwaysOff);
-    //END bugs 213068, 287847 --------------------------------------------------------------
-
-    QListView::updateGeometries();
-
-    //BEGIN bugs 213068, 287847 ------------------------------------------------------------
-    setVerticalScrollBarPolicy(verticalP);
-    setHorizontalScrollBarPolicy(horizontalP);
+    setVerticalScrollBarPolicy(rowCount>1 ? Qt::ScrollBarAlwaysOn : Qt::ScrollBarAlwaysOff);
+    setHorizontalScrollBarPolicy(colCount>1 ? Qt::ScrollBarAlwaysOn : Qt::ScrollBarAlwaysOff);
     //END bugs 213068, 287847 --------------------------------------------------------------
 
     if (!d->isCategorized()) {
         return;
     }
 
-    const int rowCount = d->proxyModel->rowCount();
     if (!rowCount) {
         verticalScrollBar()->setRange(0, 0);
         // unconditional, see function end todo
