Branch: master

dc94a41a 2014-10-04 18:27:03 Timothy Pearson
Fix rare Konqueror crash in tree view mode
This relates to Bug 1820
M konqueror/listview/konq_listviewitems.cc
M konqueror/listview/konq_listviewitems.h
M konqueror/listview/konq_treeviewitem.cc
M konqueror/listview/konq_treeviewitem.h
M konqueror/listview/konq_treeviewwidget.cc
diff --git a/konqueror/listview/konq_listviewitems.cc b/konqueror/listview/konq_listviewitems.cc
index d566531..45ff99c 100644
--- a/konqueror/listview/konq_listviewitems.cc
+++ b/konqueror/listview/konq_listviewitems.cc
@@ -404,6 +404,7 @@
 ,m_bDisabled(false)
 ,m_bActive(false)
 ,m_fileitem(_fileitem)
+,m_fileitemURL(_fileitem->url())
 ,m_pListViewWidget(_listViewWidget)
 {}
 
@@ -413,6 +414,7 @@
 ,m_bDisabled(false)
 ,m_bActive(false)
 ,m_fileitem(_fileitem)
+,m_fileitemURL(_fileitem->url())
 ,m_pListViewWidget(_listViewWidget)
 {}
 
diff --git a/konqueror/listview/konq_listviewitems.h b/konqueror/listview/konq_listviewitems.h
index f374daf..2e28275 100644
--- a/konqueror/listview/konq_listviewitems.h
+++ b/konqueror/listview/konq_listviewitems.h
@@ -71,8 +71,11 @@
       bool m_bDisabled;
       bool m_bActive; 
       
-      /** Pointer to the file item in KDirLister's list */
+      /** Pointer to the file item in KDirLister's list
+        * Don't use this unless you absolutely have to! */
       KFileItem* m_fileitem;
+      /** URL of file item */
+      KURL m_fileitemURL;
       /** Parent tree view */
       KonqBaseListViewWidget* m_pListViewWidget;
 
diff --git a/konqueror/listview/konq_treeviewitem.cc b/konqueror/listview/konq_treeviewitem.cc
index 32baf1c..12953c4 100644
--- a/konqueror/listview/konq_treeviewitem.cc
+++ b/konqueror/listview/konq_treeviewitem.cc
@@ -89,8 +89,13 @@
   }
 }
 
+KURL KonqListViewDir::kurl()
+{
+  return m_fileitemURL;
+}
+
 TQString KonqListViewDir::url( int _trailing )
 {
-  return item()->url().url( _trailing );
+  return m_fileitemURL.url( _trailing );
 }
 
diff --git a/konqueror/listview/konq_treeviewitem.h b/konqueror/listview/konq_treeviewitem.h
index b17adac..6dcc1bb 100644
--- a/konqueror/listview/konq_treeviewitem.h
+++ b/konqueror/listview/konq_treeviewitem.h
@@ -68,6 +68,11 @@
 
   /**
    * URL of this directory
+   */
+  KURL kurl();
+
+  /**
+   * URL of this directory
    * @param _trailing set to true for a trailing slash (see KURL)
    */
   TQString url( int _trailing );
diff --git a/konqueror/listview/konq_treeviewwidget.cc b/konqueror/listview/konq_treeviewwidget.cc
index 4d04f2f..77adc4b 100644
--- a/konqueror/listview/konq_treeviewwidget.cc
+++ b/konqueror/listview/konq_treeviewwidget.cc
@@ -294,13 +294,13 @@
 
 void KonqTreeViewWidget::openSubFolder( KonqListViewDir* _dir, bool _reload )
 {
-   m_dirLister->openURL( _dir->item()->url(), true /* keep existing data */, _reload );
+   m_dirLister->openURL( _dir->kurl(), true /* keep existing data */, _reload );
    slotUpdateBackground();
 }
 
 void KonqTreeViewWidget::stopListingSubFolder( KonqListViewDir* _dir )
 {
-   m_dirLister->stop( _dir->item()->url() );
+   m_dirLister->stop( _dir->kurl() );
    slotUpdateBackground();
 }