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
pull/2/head
Timothy Pearson 10 years ago
parent 485ab965cd
commit 3e7ad37f56

@ -1008,7 +1008,7 @@ void KonqKfmIconView::slotNewItems( const KFileItemList& entries )
if ( fileItem->isDir() && m_pProps->isShowingDirectoryOverlays() ) { if ( fileItem->isDir() && m_pProps->isShowingDirectoryOverlays() ) {
showDirectoryOverlay(item); 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); showFreeSpaceOverlay(item);
} }
@ -1207,8 +1207,8 @@ void KonqKfmIconView::slotRefreshItems( const KFileItemList& entries )
if ( !bNeedRepaint && oldSize != ivi->pixmap()->size() ) { if ( !bNeedRepaint && oldSize != ivi->pixmap()->size() ) {
bNeedRepaint = true; bNeedRepaint = true;
} }
if ( (*rit)->mimetype().startsWith("media/") && m_pProps->isShowingFreeSpaceOverlays() ) { if ( (*rit)->mimetypeFast().startsWith("media/") && m_pProps->isShowingFreeSpaceOverlays() ) {
if ((*rit)->mimetype().contains("_mounted")) { if ((*rit)->mimetypeFast().contains("_mounted")) {
showFreeSpaceOverlay(ivi); showFreeSpaceOverlay(ivi);
} }
else { else {

@ -255,14 +255,14 @@ void KonqInfoListViewItem::paintFocus( TQPainter * _painter, const TQColorGroup
TQListViewItem::paintFocus( _painter, cg, r ); TQListViewItem::paintFocus( _painter, cg, r );
} }
#if 0 void KonqInfoListViewItem::mimetypeFound()
void KonqBaseListViewItem::mimetypeFound()
{ {
#if 0
// Update icon // Update icon
setDisabled( m_bDisabled ); setDisabled( m_bDisabled );
uint done = 0; uint done = 0;
KonqBaseListViewWidget * lv = static_cast<KonqBaseListViewWidget*>(listView()); KonqBaseListViewWidget * lv = m_pListViewWidget;
for (unsigned int i=0; i<KonqBaseListViewWidget::NumberOfAtoms && done < 2; i++) for (unsigned int i=0; i<m_pListViewWidget->NumberOfAtoms && done < 2; i++)
{ {
ColumnInfo *tmpColumn=&lv->columnConfigInfo()[i]; ColumnInfo *tmpColumn=&lv->columnConfigInfo()[i];
if (lv->columnConfigInfo()[i].udsId==TDEIO::UDS_FILE_TYPE && tmpColumn->displayThisOne) if (lv->columnConfigInfo()[i].udsId==TDEIO::UDS_FILE_TYPE && tmpColumn->displayThisOne)
@ -276,6 +276,5 @@ void KonqBaseListViewItem::mimetypeFound()
done++; done++;
} }
} }
}
#endif #endif
}

@ -58,6 +58,7 @@ class KonqInfoListViewItem : public KonqBaseListViewItem
virtual void paintCell( TQPainter *_painter, const TQColorGroup & cg, virtual void paintCell( TQPainter *_painter, const TQColorGroup & cg,
int column, int width, int alignment ); int column, int width, int alignment );
virtual void paintFocus( TQPainter * _painter, const TQColorGroup & cg, const TQRect & r ); virtual void paintFocus( TQPainter * _painter, const TQColorGroup & cg, const TQRect & r );
virtual void mimetypeFound();
virtual void updateContents(); virtual void updateContents();
virtual void setDisabled( bool disabled ); virtual void setDisabled( bool disabled );

@ -208,8 +208,9 @@ void KonqInfoListViewWidget::slotNewItems( const KFileItemList& list)
} }
} }
if ( !(*kit)->isMimeTypeKnown() ) if ( !(*kit)->isMimeTypeKnown() ) {
m_pBrowserView->lstPendingMimeIconItems().append( tmp ); m_pBrowserView->lstPendingMimeIconItems().append( tmp );
}
} }
m_pBrowserView->newItems( list ); m_pBrowserView->newItems( list );

@ -348,6 +348,10 @@ void KonqListView::determineIcon( KonqBaseListViewItem * item )
//if ( oldSerial != newIcon.serialNumber() ) //if ( oldSerial != newIcon.serialNumber() )
// item->setPixmap( 0, newIcon ); // item->setPixmap( 0, newIcon );
if (item->item()->isMimeTypeKnown()) {
item->mimetypeFound();
}
// We also have columns to update, not only the icon // We also have columns to update, not only the icon
item->updateContents(); item->updateContents();
} }

@ -106,10 +106,14 @@ void KonqListViewItem::updateContents()
setText(tmpColumn->displayInColumn,m_fileitem->group()); setText(tmpColumn->displayInColumn,m_fileitem->group());
break; break;
case TDEIO::UDS_FILE_TYPE: case TDEIO::UDS_FILE_TYPE:
setText(tmpColumn->displayInColumn,m_fileitem->mimeComment()); if (m_fileitem->isMimeTypeKnown()) {
setText(tmpColumn->displayInColumn,m_fileitem->mimeComment());
}
break; break;
case TDEIO::UDS_MIME_TYPE: case TDEIO::UDS_MIME_TYPE:
setText(tmpColumn->displayInColumn,m_fileitem->mimetype()); if (m_fileitem->isMimeTypeKnown()) {
setText(tmpColumn->displayInColumn,m_fileitem->mimetype());
}
break; break;
case TDEIO::UDS_URL: case TDEIO::UDS_URL:
setText(tmpColumn->displayInColumn,m_fileitem->url().prettyURL()); setText(tmpColumn->displayInColumn,m_fileitem->url().prettyURL());

@ -48,7 +48,7 @@ class KonqBaseListViewItem : public TDEListViewItem
/** @return the file item held by this instance */ /** @return the file item held by this instance */
KFileItem * item() { return m_fileitem; } KFileItem * item() { return m_fileitem; }
void mimetypeFound(); virtual void mimetypeFound();
virtual void updateContents() = 0; virtual void updateContents() = 0;
virtual void setDisabled( bool disabled ) { m_bDisabled = disabled; } virtual void setDisabled( bool disabled ) { m_bDisabled = disabled; }
virtual void setActive ( bool active ) { m_bActive = active; } virtual void setActive ( bool active ) { m_bActive = active; }

@ -236,9 +236,9 @@ void KonqBaseListViewWidget::readProtocolConfig( const KURL & url )
lstColumns << column; lstColumns << column;
const TQString type = (*extraFieldsIt).type; // ## TODO use when sorting const TQString type = (*extraFieldsIt).type; // ## TODO use when sorting
TQVariant::Type t = TQVariant::Invalid; TQVariant::Type t = TQVariant::Invalid;
if ( type.lower() == "qstring" ) if ( type.lower() == TQString(TQSTRING_OBJECT_NAME_STRING).lower() )
t = TQVariant::String; t = TQVariant::String;
else if ( type.lower() == "qdatetime" ) else if ( type.lower() == TQString(TQDATETIME_OBJECT_NAME_STRING).lower() )
t = TQVariant::DateTime; t = TQVariant::DateTime;
else else
kdWarning() << "Unsupported ExtraType '" << type << "'" << endl; kdWarning() << "Unsupported ExtraType '" << type << "'" << endl;

@ -161,10 +161,14 @@ void KonqTextViewItem::updateContents()
setText(tmpColumn->displayInColumn,m_fileitem->linkDest()); setText(tmpColumn->displayInColumn,m_fileitem->linkDest());
break; break;
case TDEIO::UDS_FILE_TYPE: case TDEIO::UDS_FILE_TYPE:
setText(tmpColumn->displayInColumn,m_fileitem->mimeComment()); if (m_fileitem->isMimeTypeKnown()) {
setText(tmpColumn->displayInColumn,m_fileitem->mimeComment());
}
break; break;
case TDEIO::UDS_MIME_TYPE: case TDEIO::UDS_MIME_TYPE:
setText(tmpColumn->displayInColumn,m_fileitem->mimetype()); if (m_fileitem->isMimeTypeKnown()) {
setText(tmpColumn->displayInColumn,m_fileitem->mimetype());
}
break; break;
case TDEIO::UDS_URL: case TDEIO::UDS_URL:
setText(tmpColumn->displayInColumn,m_fileitem->url().prettyURL()); setText(tmpColumn->displayInColumn,m_fileitem->url().prettyURL());
@ -230,3 +234,25 @@ void KonqTextViewItem::setup()
if ( h % 2 > 0 ) h++; if ( h % 2 > 0 ) h++;
setHeight(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++;
}
}
}

@ -59,6 +59,7 @@ class KonqTextViewItem : public KonqBaseListViewItem
* on the view)*/ * on the view)*/
virtual void paintCell( TQPainter *_painter, const TQColorGroup & _cg, int _column, int _width, int _alignment ); 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 paintFocus( TQPainter *_painter, const TQColorGroup & _cg, const TQRect & r );
virtual void mimetypeFound();
virtual void updateContents(); virtual void updateContents();
protected: protected:

@ -94,7 +94,8 @@ void KonqTextViewWidget::slotNewItems( const KFileItemList & entries )
setSelected( tmp, true ); setSelected( tmp, true );
} }
} }
if ( !(*kit)->isMimeTypeKnown() )
m_pBrowserView->lstPendingMimeIconItems().append( tmp );
} }
m_pBrowserView->newItems( entries ); m_pBrowserView->newItems( entries );

@ -570,14 +570,9 @@ void KFileIVI::updatePixmapSize()
KonqIconViewWidget* view = static_cast<KonqIconViewWidget*>( iconView() ); KonqIconViewWidget* view = static_cast<KonqIconViewWidget*>( iconView() );
if ( view && view->canPreview( item() ) ) { TQSize pixSize = TQSize( size, size );
int previewSize = view->previewIconSize( size ); if ( pixSize != pixmapSize() ) {
setPixmapSize( TQSize( previewSize, previewSize ) ); setPixmapSize( pixSize );
}
else {
TQSize pixSize = TQSize( size, size );
if ( pixSize != pixmapSize() )
setPixmapSize( pixSize );
} }
} }

Loading…
Cancel
Save