mirror of
https://github.com/RetroShare/RetroShare.git
synced 2024-12-28 00:49:28 -05:00
Fix SharedFilesDialog take long time to update.
This is due to Qt bug: https://bugreports.qt.io/browse/QTBUG-11438 Thanks to Jolavillette
This commit is contained in:
parent
d8ca92da1b
commit
bc27863d23
@ -970,8 +970,9 @@ void SharedFilesDialog::recursExpandAll(const QModelIndex& index)
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void SharedFilesDialog::recursSaveExpandedItems(const QModelIndex& index,const std::string& path,std::set<std::string>& exp,
|
void SharedFilesDialog::recursSaveExpandedItems(const QModelIndex& index,const std::string& path,
|
||||||
std::set<std::string>& vis,
|
std::set<std::string>& exp,
|
||||||
|
std::set<std::string>& hid,
|
||||||
std::set<std::string>& sel
|
std::set<std::string>& sel
|
||||||
)
|
)
|
||||||
{
|
{
|
||||||
@ -983,11 +984,12 @@ void SharedFilesDialog::recursSaveExpandedItems(const QModelIndex& index,const s
|
|||||||
if(ui.dirTreeView->selectionModel()->selection().contains(index))
|
if(ui.dirTreeView->selectionModel()->selection().contains(index))
|
||||||
sel.insert(local_path) ;
|
sel.insert(local_path) ;
|
||||||
|
|
||||||
if(ui.dirTreeView->isRowHidden(index.row(),index.parent()))
|
// Disable hidden check as we don't use it and Qt bug: https://bugreports.qt.io/browse/QTBUG-11438
|
||||||
|
/*if(ui.dirTreeView->isRowHidden(index.row(),index.parent()))
|
||||||
{
|
{
|
||||||
vis.insert(local_path) ;
|
hid.insert(local_path) ;
|
||||||
return ;
|
return ;
|
||||||
}
|
}*/
|
||||||
|
|
||||||
if(ui.dirTreeView->isExpanded(index))
|
if(ui.dirTreeView->isExpanded(index))
|
||||||
{
|
{
|
||||||
@ -998,7 +1000,11 @@ void SharedFilesDialog::recursSaveExpandedItems(const QModelIndex& index,const s
|
|||||||
exp.insert(local_path) ;
|
exp.insert(local_path) ;
|
||||||
|
|
||||||
for(int row=0;row<ui.dirTreeView->model()->rowCount(index);++row)
|
for(int row=0;row<ui.dirTreeView->model()->rowCount(index);++row)
|
||||||
recursSaveExpandedItems(index.child(row,0),local_path,exp,vis,sel) ;
|
#if QT_VERSION >= QT_VERSION_CHECK(5, 8, 0)
|
||||||
|
recursSaveExpandedItems(ui.dirTreeView->model()->index(row,0,index),local_path,exp,hid,sel) ;
|
||||||
|
#else
|
||||||
|
recursSaveExpandedItems(index.child(row,0),local_path,exp,hid,sel) ;
|
||||||
|
#endif
|
||||||
}
|
}
|
||||||
#ifdef DEBUG_SHARED_FILES_DIALOG
|
#ifdef DEBUG_SHARED_FILES_DIALOG
|
||||||
else
|
else
|
||||||
@ -1008,23 +1014,25 @@ void SharedFilesDialog::recursSaveExpandedItems(const QModelIndex& index,const s
|
|||||||
|
|
||||||
void SharedFilesDialog::recursRestoreExpandedItems(const QModelIndex& index, const std::string &path,
|
void SharedFilesDialog::recursRestoreExpandedItems(const QModelIndex& index, const std::string &path,
|
||||||
const std::set<std::string>& exp,
|
const std::set<std::string>& exp,
|
||||||
const std::set<std::string>& vis,
|
const std::set<std::string>& hid,
|
||||||
const std::set<std::string> &sel)
|
const std::set<std::string> &sel)
|
||||||
{
|
{
|
||||||
std::string local_path = path+"/"+index.data(Qt::DisplayRole).toString().toStdString();
|
std::string local_path = path+"/"+index.data(Qt::DisplayRole).toString().toStdString();
|
||||||
#ifdef DEBUG_SHARED_FILES_DIALOG
|
#ifdef DEBUG_SHARED_FILES_DIALOG
|
||||||
std::cerr << "at index " << index.row() << ". data[1]=" << local_path << std::endl;
|
std::cerr << "at index " << index.row() << ". data[1]=" << local_path << std::endl;
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
if(sel.find(local_path) != sel.end())
|
if(sel.find(local_path) != sel.end())
|
||||||
ui.dirTreeView->selectionModel()->select(index, QItemSelectionModel::Select | QItemSelectionModel::Rows);
|
ui.dirTreeView->selectionModel()->select(index, QItemSelectionModel::Select | QItemSelectionModel::Rows);
|
||||||
|
|
||||||
bool invisible = vis.find(local_path) != vis.end();
|
// Disable hidden check as we don't use it and Qt bug: https://bugreports.qt.io/browse/QTBUG-11438
|
||||||
ui.dirTreeView->setRowHidden(index.row(),index.parent(),invisible ) ;
|
/*bool invisible = hid.find(local_path) != hid.end();
|
||||||
|
ui.dirTreeView->setRowHidden(index.row(),index.parent(),invisible ) ;*/
|
||||||
|
|
||||||
// if(invisible)
|
// if(invisible)
|
||||||
// mHiddenIndexes.push_back(proxyModel->mapToSource(index));
|
// mHiddenIndexes.push_back(proxyModel->mapToSource(index));
|
||||||
|
|
||||||
if(!invisible && exp.find(local_path) != exp.end())
|
if(/*!invisible &&*/ exp.find(local_path) != exp.end())
|
||||||
{
|
{
|
||||||
#ifdef DEBUG_SHARED_FILES_DIALOG
|
#ifdef DEBUG_SHARED_FILES_DIALOG
|
||||||
std::cerr << "re expanding index " << local_path << std::endl;
|
std::cerr << "re expanding index " << local_path << std::endl;
|
||||||
@ -1032,7 +1040,11 @@ void SharedFilesDialog::recursRestoreExpandedItems(const QModelIndex& index, con
|
|||||||
ui.dirTreeView->setExpanded(index,true) ;
|
ui.dirTreeView->setExpanded(index,true) ;
|
||||||
|
|
||||||
for(int row=0;row<ui.dirTreeView->model()->rowCount(index);++row)
|
for(int row=0;row<ui.dirTreeView->model()->rowCount(index);++row)
|
||||||
recursRestoreExpandedItems(index.child(row,0),local_path,exp,vis,sel) ;
|
#if QT_VERSION >= QT_VERSION_CHECK(5, 8, 0)
|
||||||
|
recursRestoreExpandedItems(ui.dirTreeView->model()->index(row,0,index),local_path,exp,hid,sel) ;
|
||||||
|
#else
|
||||||
|
recursRestoreExpandedItems(index.child(row,0),local_path,exp,hid,sel) ;
|
||||||
|
#endif
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user