[prev in list] [next in list] [prev in thread] [next in thread] 

List:       kde-commits
Subject:    KDE/kdebase/apps/plasma/applets/folderview
From:       Darío Andrés Rodríguez <andresbajotierra () gmail ! co
Date:       2010-01-21 23:00:01
Message-ID: 1264114801.188193.25626.nullmailer () svn ! kde ! org
[Download RAW message or body]

SVN commit 1078287 by darioandres:

- Preserve the icons' position when modifying the preview settings

CCBUG: 182712


 M  +36 -6     folderview.cpp  


--- trunk/KDE/kdebase/apps/plasma/applets/folderview/folderview.cpp #1078286:1078287
@@ -608,24 +608,45 @@
     const int filterType = uiFilter.filterType->currentIndex();
     KConfigGroup cg = config();
     bool needReload = false;
+    bool preserveIconPositions = false;
 
     if (m_drawShadows != uiDisplay.drawShadows->isChecked()) {
         m_drawShadows = uiDisplay.drawShadows->isChecked();
         cg.writeEntry("drawShadows", m_drawShadows);
     }
 
-    if (m_showPreviews != uiDisplay.showPreviews->isChecked() ||
-        (m_previewGenerator && m_previewPlugins != m_previewGenerator->enabledPlugins()))
-    {
+    if (m_showPreviews != uiDisplay.showPreviews->isChecked()) {
         m_showPreviews = uiDisplay.showPreviews->isChecked();
         cg.writeEntry("showPreviews", m_showPreviews);
+
+        //As disabling the previews will force a rearrangement, we need to manually
+        //save and restore the icons positions
+
+        QStringList iconPositionsData;
+        if (!m_showPreviews) {
+            //Save the icon positions
+            iconPositionsData = m_iconView->iconPositionsData();
+        }
+
+        //Enable/disable the previews
+        m_previewGenerator->setPreviewShown(m_showPreviews);
+
+        if (!m_showPreviews) {
+            //Restore the icon positions
+            m_iconView->setIconPositionsData(iconPositionsData);
+        }
+    }
+
+    if (m_previewGenerator && m_previewPlugins != m_previewGenerator->enabledPlugins()) {
         cg.writeEntry("previewPlugins", m_previewPlugins);
+        m_previewGenerator->setEnabledPlugins(m_previewPlugins);
 
-        m_previewGenerator->setEnabledPlugins(m_previewPlugins);
-        m_previewGenerator->setPreviewShown(m_showPreviews);
+        //Chaning the preview plugins will also need a reload to work, so we need to preserve
+        //the icons position
         needReload = true;
+        preserveIconPositions = true;
     }
-
+    
     const QColor defaultColor = isContainment() ? Qt::white :
             Plasma::Theme::defaultTheme()->color(Plasma::Theme::TextColor);
     const QColor color = uiDisplay.colorButton->color();
@@ -723,8 +744,17 @@
     }
 
     if (needReload) {
+        //Manually save and restore the icon positions if we need it
+        QStringList iconPositionsData;
+        if (preserveIconPositions) {
+            iconPositionsData = m_iconView->iconPositionsData();
+        }
+        
         m_dirModel->dirLister()->openUrl(m_url);
 
+        if (preserveIconPositions) {
+             m_iconView->setIconPositionsData(iconPositionsData);
+        }
         // So the KFileItemActions will be recreated for the new URL.
         delete m_itemActions;
         m_itemActions = 0;
[prev in list] [next in list] [prev in thread] [next in thread] 

Configure | About | News | Add a list | Sponsored by KoreLogic