Branch: master

f07158cd 2014-11-14 12:57:59 Timothy Pearson
Fix large file previews that were broken in GIT hash 3e7ad37f
M konqueror/iconview/konq_iconview.cc
M libkonq/konq_iconviewwidget.cc
M libkonq/tdefileivi.cc
M libkonq/tdefileivi.h
diff --git a/konqueror/iconview/konq_iconview.cc b/konqueror/iconview/konq_iconview.cc
index 0e754b8..3b6432d 100644
--- a/konqueror/iconview/konq_iconview.cc
+++ b/konqueror/iconview/konq_iconview.cc
@@ -1108,8 +1108,6 @@
 
 void KonqKfmIconView::showFreeSpaceOverlay(KFileIVI* item)
 {
-    KFileItem* fileItem = item->item();
-
     m_paOutstandingFreeSpaceOverlays.append(item);
     if (m_paOutstandingFreeSpaceOverlays.count() == 1)
     {
@@ -1296,6 +1294,10 @@
 
   (void) item->item()->determineMimeType();
 
+  if (item->item()->isMimeTypeKnown()) {
+      item->mimeTypeAndIconDetermined();
+  }
+
   item->setIcon( iconSize(), item->state(), true, true );
   item->setMouseOverAnimation( item->item()->iconName() );
 }
diff --git a/libkonq/konq_iconviewwidget.cc b/libkonq/konq_iconviewwidget.cc
index 8cb2226..96e04df 100644
--- a/libkonq/konq_iconviewwidget.cc
+++ b/libkonq/konq_iconviewwidget.cc
@@ -709,14 +709,16 @@
     // can't call gridXValue() because this already would need the new itemTextPos()
     int sz = m_size ? m_size : TDEGlobal::iconLoader()->currentSize( TDEIcon::Desktop );
 
-    if ( m_bSetGridX )
-        if ( pos == TQIconView::Bottom )
+    if ( m_bSetGridX ) {
+        if ( pos == TQIconView::Bottom ) {
             setGridX( TQMAX( sz + 50, previewIconSize( sz ) + 13 ) );
+        }
         else
         {
             setMaxItemWidth( TQMAX( sz, previewIconSize( sz ) ) + m_pSettings->iconTextWidth() );
             setGridX( -1 );
         }
+    }
 
     TDEIconView::setItemTextPos( pos );
 }
@@ -773,14 +775,16 @@
 
 void KonqIconViewWidget::calculateGridX()
 {
-    if ( m_bSetGridX )
-        if ( itemTextPos() == TQIconView::Bottom )
+    if ( m_bSetGridX ) {
+        if ( itemTextPos() == TQIconView::Bottom ) {
             setGridX( gridXValue() );
+        }
         else
         {
             setMaxItemWidth( gridXValue() );
             setGridX( -1 );
         }
+    }
 }
 
 int KonqIconViewWidget::gridXValue() const
diff --git a/libkonq/tdefileivi.cc b/libkonq/tdefileivi.cc
index 08bd240..2e23cfb 100644
--- a/libkonq/tdefileivi.cc
+++ b/libkonq/tdefileivi.cc
@@ -570,10 +570,42 @@
 
     KonqIconViewWidget* view = static_cast<KonqIconViewWidget*>( iconView() );
 
-    TQSize pixSize = TQSize( size, size );
-    if ( pixSize != pixmapSize() ) {
-        setPixmapSize( pixSize );
+    bool mimeDetermined = false;
+    if ( m_fileitem->isMimeTypeKnown() ) {
+        mimeDetermined = true;
     }
+
+    if (mimeDetermined) {
+        bool changed = false;
+        if ( view && view->canPreview( item() ) ) {
+            int previewSize = view->previewIconSize( size );
+            if (previewSize != size) {
+                setPixmapSize( TQSize( previewSize, previewSize ) );
+                changed = true;
+            }
+        }
+        else {
+            TQSize pixSize = TQSize( size, size );
+            if ( pixSize != pixmapSize() ) {
+                setPixmapSize( pixSize );
+                changed = true;
+            }
+        }
+        if (changed) {
+            view->adjustItems();
+        }
+    }
+    else {
+        TQSize pixSize = TQSize( size, size );
+        if ( pixSize != pixmapSize() ) {
+            setPixmapSize( pixSize );
+        }
+    }
+}
+
+void KFileIVI::mimeTypeAndIconDetermined()
+{
+    updatePixmapSize();
 }
 
 /* vim: set noet sw=4 ts=8 softtabstop=4: */
diff --git a/libkonq/tdefileivi.h b/libkonq/tdefileivi.h
index 243688d..4701fb9 100644
--- a/libkonq/tdefileivi.h
+++ b/libkonq/tdefileivi.h
@@ -208,6 +208,8 @@
 
     virtual int compare( TQIconViewItem *i ) const;
 
+    void mimeTypeAndIconDetermined();
+
 protected:
     virtual void dropped( TQDropEvent *e, const TQValueList<TQIconDragItem> &  );
 
@@ -240,7 +242,7 @@
 
     /** Check if a thumbnail will be generated and calc the size of the icon */
     void updatePixmapSize();
-    
+
     int m_size, m_state;
     bool m_bDisabled;
     bool m_bThumbnail;