3e7ad37f | 2014-09-27 18:49:29 | Timothy Pearson |
Repair all known Konqueror performance regressions caused by early calls to expensive mimetype operations These accidental errors span most TDE releases and many KDE 3.x releases This resolves Bug 699 |
||
M konqueror/iconview/konq_iconview.cc M konqueror/listview/konq_infolistviewitem.cc M konqueror/listview/konq_infolistviewitem.h M konqueror/listview/konq_infolistviewwidget.cc M konqueror/listview/konq_listview.cc M konqueror/listview/konq_listviewitems.cc M konqueror/listview/konq_listviewitems.h M konqueror/listview/konq_listviewwidget.cc M konqueror/listview/konq_textviewitem.cc M konqueror/listview/konq_textviewitem.h M konqueror/listview/konq_textviewwidget.cc M libkonq/tdefileivi.cc |
||
diff --git a/konqueror/iconview/konq_iconview.cc b/konqueror/iconview/konq_iconview.cc index 04b2bfb..0e754b8 100644 --- a/konqueror/iconview/konq_iconview.cc +++ b/konqueror/iconview/konq_iconview.cc @@ -1008,7 +1008,7 @@ if ( fileItem->isDir() && m_pProps->isShowingDirectoryOverlays() ) { showDirectoryOverlay(item); } - if ( fileItem->mimetype().startsWith("media/") && fileItem->mimetype().contains("_mounted") && m_pProps->isShowingFreeSpaceOverlays() ) { + if ( fileItem->mimetypeFast().startsWith("media/") && fileItem->mimetypeFast().contains("_mounted") && m_pProps->isShowingFreeSpaceOverlays() ) { showFreeSpaceOverlay(item); } @@ -1207,8 +1207,8 @@ if ( !bNeedRepaint && oldSize != ivi->pixmap()->size() ) { bNeedRepaint = true; } - if ( (*rit)->mimetype().startsWith("media/") && m_pProps->isShowingFreeSpaceOverlays() ) { - if ((*rit)->mimetype().contains("_mounted")) { + if ( (*rit)->mimetypeFast().startsWith("media/") && m_pProps->isShowingFreeSpaceOverlays() ) { + if ((*rit)->mimetypeFast().contains("_mounted")) { showFreeSpaceOverlay(ivi); } else { diff --git a/konqueror/listview/konq_infolistviewitem.cc b/konqueror/listview/konq_infolistviewitem.cc index 5f4a0f6..18efb3f 100644 --- a/konqueror/listview/konq_infolistviewitem.cc +++ b/konqueror/listview/konq_infolistviewitem.cc @@ -255,14 +255,14 @@ TQListViewItem::paintFocus( _painter, cg, r ); } -#if 0 -void KonqBaseListViewItem::mimetypeFound() +void KonqInfoListViewItem::mimetypeFound() { +#if 0 // Update icon setDisabled( m_bDisabled ); uint done = 0; - KonqBaseListViewWidget * lv = static_cast<KonqBaseListViewWidget*>(listView()); - for (unsigned int i=0; i<KonqBaseListViewWidget::NumberOfAtoms && done < 2; i++) + KonqBaseListViewWidget * lv = m_pListViewWidget; + for (unsigned int i=0; i<m_pListViewWidget->NumberOfAtoms && done < 2; i++) { ColumnInfo *tmpColumn=&lv->columnConfigInfo()[i]; if (lv->columnConfigInfo()[i].udsId==TDEIO::UDS_FILE_TYPE && tmpColumn->displayThisOne) @@ -276,6 +276,5 @@ done++; } } -} - #endif +} diff --git a/konqueror/listview/konq_infolistviewitem.h b/konqueror/listview/konq_infolistviewitem.h index e819281..f4ee2d3 100644 --- a/konqueror/listview/konq_infolistviewitem.h +++ b/konqueror/listview/konq_infolistviewitem.h @@ -58,6 +58,7 @@ virtual void paintCell( TQPainter *_painter, const TQColorGroup & cg, int column, int width, int alignment ); virtual void paintFocus( TQPainter * _painter, const TQColorGroup & cg, const TQRect & r ); + virtual void mimetypeFound(); virtual void updateContents(); virtual void setDisabled( bool disabled ); diff --git a/konqueror/listview/konq_infolistviewwidget.cc b/konqueror/listview/konq_infolistviewwidget.cc index fab7989..e835f1c 100644 --- a/konqueror/listview/konq_infolistviewwidget.cc +++ b/konqueror/listview/konq_infolistviewwidget.cc @@ -208,8 +208,9 @@ } } - if ( !(*kit)->isMimeTypeKnown() ) + if ( !(*kit)->isMimeTypeKnown() ) { m_pBrowserView->lstPendingMimeIconItems().append( tmp ); + } } m_pBrowserView->newItems( list ); diff --git a/konqueror/listview/konq_listview.cc b/konqueror/listview/konq_listview.cc index 0e329f7..8c9369a 100644 --- a/konqueror/listview/konq_listview.cc +++ b/konqueror/listview/konq_listview.cc @@ -348,6 +348,10 @@ //if ( oldSerial != newIcon.serialNumber() ) // item->setPixmap( 0, newIcon ); + if (item->item()->isMimeTypeKnown()) { + item->mimetypeFound(); + } + // We also have columns to update, not only the icon item->updateContents(); } diff --git a/konqueror/listview/konq_listviewitems.cc b/konqueror/listview/konq_listviewitems.cc index e9a14a8..d566531 100644 --- a/konqueror/listview/konq_listviewitems.cc +++ b/konqueror/listview/konq_listviewitems.cc @@ -106,10 +106,14 @@ setText(tmpColumn->displayInColumn,m_fileitem->group()); break; case TDEIO::UDS_FILE_TYPE: - setText(tmpColumn->displayInColumn,m_fileitem->mimeComment()); + if (m_fileitem->isMimeTypeKnown()) { + setText(tmpColumn->displayInColumn,m_fileitem->mimeComment()); + } break; case TDEIO::UDS_MIME_TYPE: - setText(tmpColumn->displayInColumn,m_fileitem->mimetype()); + if (m_fileitem->isMimeTypeKnown()) { + setText(tmpColumn->displayInColumn,m_fileitem->mimetype()); + } break; case TDEIO::UDS_URL: setText(tmpColumn->displayInColumn,m_fileitem->url().prettyURL()); diff --git a/konqueror/listview/konq_listviewitems.h b/konqueror/listview/konq_listviewitems.h index 6a74432..f374daf 100644 --- a/konqueror/listview/konq_listviewitems.h +++ b/konqueror/listview/konq_listviewitems.h @@ -48,7 +48,7 @@ /** @return the file item held by this instance */ KFileItem * item() { return m_fileitem; } - void mimetypeFound(); + virtual void mimetypeFound(); virtual void updateContents() = 0; virtual void setDisabled( bool disabled ) { m_bDisabled = disabled; } virtual void setActive ( bool active ) { m_bActive = active; } diff --git a/konqueror/listview/konq_listviewwidget.cc b/konqueror/listview/konq_listviewwidget.cc index 858d7c9..1fdb86e 100644 --- a/konqueror/listview/konq_listviewwidget.cc +++ b/konqueror/listview/konq_listviewwidget.cc @@ -236,9 +236,9 @@ lstColumns << column; const TQString type = (*extraFieldsIt).type; // ## TODO use when sorting TQVariant::Type t = TQVariant::Invalid; - if ( type.lower() == "qstring" ) + if ( type.lower() == TQString(TQSTRING_OBJECT_NAME_STRING).lower() ) t = TQVariant::String; - else if ( type.lower() == "qdatetime" ) + else if ( type.lower() == TQString(TQDATETIME_OBJECT_NAME_STRING).lower() ) t = TQVariant::DateTime; else kdWarning() << "Unsupported ExtraType '" << type << "'" << endl; diff --git a/konqueror/listview/konq_textviewitem.cc b/konqueror/listview/konq_textviewitem.cc index 3919d6c..1076e10 100644 --- a/konqueror/listview/konq_textviewitem.cc +++ b/konqueror/listview/konq_textviewitem.cc @@ -161,10 +161,14 @@ setText(tmpColumn->displayInColumn,m_fileitem->linkDest()); break; case TDEIO::UDS_FILE_TYPE: - setText(tmpColumn->displayInColumn,m_fileitem->mimeComment()); + if (m_fileitem->isMimeTypeKnown()) { + setText(tmpColumn->displayInColumn,m_fileitem->mimeComment()); + } break; case TDEIO::UDS_MIME_TYPE: - setText(tmpColumn->displayInColumn,m_fileitem->mimetype()); + if (m_fileitem->isMimeTypeKnown()) { + setText(tmpColumn->displayInColumn,m_fileitem->mimetype()); + } break; case TDEIO::UDS_URL: setText(tmpColumn->displayInColumn,m_fileitem->url().prettyURL()); @@ -230,3 +234,25 @@ if ( h % 2 > 0 ) h++; setHeight(h); } + +void KonqTextViewItem::mimetypeFound() +{ + // Update icon + setDisabled( m_bDisabled ); + uint done = 0; + KonqBaseListViewWidget * lv = m_pListViewWidget; + for (unsigned int i=0; i<m_pListViewWidget->NumberOfAtoms && done < 2; i++) + { + ColumnInfo *tmpColumn=&lv->columnConfigInfo()[i]; + if (lv->columnConfigInfo()[i].udsId==TDEIO::UDS_FILE_TYPE && tmpColumn->displayThisOne) + { + setText(tmpColumn->displayInColumn, m_fileitem->mimeComment()); + done++; + } + if (lv->columnConfigInfo()[i].udsId==TDEIO::UDS_MIME_TYPE && tmpColumn->displayThisOne) + { + setText(tmpColumn->displayInColumn, m_fileitem->mimetype()); + done++; + } + } +} \ No newline at end of file diff --git a/konqueror/listview/konq_textviewitem.h b/konqueror/listview/konq_textviewitem.h index 506c1b5..57be5a7 100644 --- a/konqueror/listview/konq_textviewitem.h +++ b/konqueror/listview/konq_textviewitem.h @@ -59,6 +59,7 @@ * on the view)*/ virtual void paintCell( TQPainter *_painter, const TQColorGroup & _cg, int _column, int _width, int _alignment ); // virtual void paintFocus( TQPainter *_painter, const TQColorGroup & _cg, const TQRect & r ); + virtual void mimetypeFound(); virtual void updateContents(); protected: diff --git a/konqueror/listview/konq_textviewwidget.cc b/konqueror/listview/konq_textviewwidget.cc index 32de253..ab22789 100644 --- a/konqueror/listview/konq_textviewwidget.cc +++ b/konqueror/listview/konq_textviewwidget.cc @@ -94,7 +94,8 @@ setSelected( tmp, true ); } } - + if ( !(*kit)->isMimeTypeKnown() ) + m_pBrowserView->lstPendingMimeIconItems().append( tmp ); } m_pBrowserView->newItems( entries ); diff --git a/libkonq/tdefileivi.cc b/libkonq/tdefileivi.cc index 629d9a2..08bd240 100644 --- a/libkonq/tdefileivi.cc +++ b/libkonq/tdefileivi.cc @@ -570,14 +570,9 @@ KonqIconViewWidget* view = static_cast<KonqIconViewWidget*>( iconView() ); - if ( view && view->canPreview( item() ) ) { - int previewSize = view->previewIconSize( size ); - setPixmapSize( TQSize( previewSize, previewSize ) ); - } - else { - TQSize pixSize = TQSize( size, size ); - if ( pixSize != pixmapSize() ) - setPixmapSize( pixSize ); + TQSize pixSize = TQSize( size, size ); + if ( pixSize != pixmapSize() ) { + setPixmapSize( pixSize ); } } |