mirror of
https://github.com/qbittorrent/qBittorrent
synced 2025-07-16 02:03:07 -07:00
- Fix possible crash when closing a search tab
This commit is contained in:
parent
1128b3ea83
commit
7aa2994078
2 changed files with 20 additions and 8 deletions
|
@ -334,6 +334,7 @@ void SearchEngine::readSearchOutput(){
|
||||||
foreach(const QByteArray &line, lines_list){
|
foreach(const QByteArray &line, lines_list){
|
||||||
appendSearchResult(QString::fromUtf8(line));
|
appendSearchResult(QString::fromUtf8(line));
|
||||||
}
|
}
|
||||||
|
if(currentSearchTab)
|
||||||
currentSearchTab->getCurrentLabel()->setText(tr("Results")+QString::fromUtf8(" <i>(")+misc::toQString(nb_search_results)+QString::fromUtf8(")</i>:"));
|
currentSearchTab->getCurrentLabel()->setText(tr("Results")+QString::fromUtf8(" <i>(")+misc::toQString(nb_search_results)+QString::fromUtf8(")</i>:"));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -436,6 +437,9 @@ void SearchEngine::updateNova() {
|
||||||
// Search can be finished for 3 reasons :
|
// Search can be finished for 3 reasons :
|
||||||
// Error | Stopped by user | Finished normally
|
// Error | Stopped by user | Finished normally
|
||||||
void SearchEngine::searchFinished(int exitcode,QProcess::ExitStatus){
|
void SearchEngine::searchFinished(int exitcode,QProcess::ExitStatus){
|
||||||
|
if(searchTimeout->isActive()) {
|
||||||
|
searchTimeout->stop();
|
||||||
|
}
|
||||||
QSettings settings("qBittorrent", "qBittorrent");
|
QSettings settings("qBittorrent", "qBittorrent");
|
||||||
bool useNotificationBalloons = settings.value("Preferences/General/NotificationBaloons", true).toBool();
|
bool useNotificationBalloons = settings.value("Preferences/General/NotificationBaloons", true).toBool();
|
||||||
if(useNotificationBalloons && parent->getCurrentTabIndex() != TAB_SEARCH) {
|
if(useNotificationBalloons && parent->getCurrentTabIndex() != TAB_SEARCH) {
|
||||||
|
@ -457,22 +461,30 @@ void SearchEngine::searchFinished(int exitcode,QProcess::ExitStatus){
|
||||||
if(currentSearchTab)
|
if(currentSearchTab)
|
||||||
currentSearchTab->getCurrentLabel()->setText(tr("Results", "i.e: Search results")+QString::fromUtf8(" <i>(")+misc::toQString(nb_search_results)+QString::fromUtf8(")</i>:"));
|
currentSearchTab->getCurrentLabel()->setText(tr("Results", "i.e: Search results")+QString::fromUtf8(" <i>(")+misc::toQString(nb_search_results)+QString::fromUtf8(")</i>:"));
|
||||||
search_button->setText("Search");
|
search_button->setText("Search");
|
||||||
if(searchTimeout->isActive()) {
|
|
||||||
searchTimeout->stop();
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
// SLOT to append one line to search results list
|
// SLOT to append one line to search results list
|
||||||
// Line is in the following form :
|
// Line is in the following form :
|
||||||
// file url | file name | file size | nb seeds | nb leechers | Search engine url
|
// file url | file name | file size | nb seeds | nb leechers | Search engine url
|
||||||
void SearchEngine::appendSearchResult(QString line){
|
void SearchEngine::appendSearchResult(QString line){
|
||||||
|
if(!currentSearchTab) {
|
||||||
|
if(searchProcess->state() != QProcess::NotRunning){
|
||||||
|
searchProcess->terminate();
|
||||||
|
}
|
||||||
|
if(searchTimeout->isActive()) {
|
||||||
|
searchTimeout->stop();
|
||||||
|
}
|
||||||
|
search_stopped = true;
|
||||||
|
return;
|
||||||
|
}
|
||||||
QStringList parts = line.split("|");
|
QStringList parts = line.split("|");
|
||||||
if(parts.size() != 6){
|
if(parts.size() != 6){
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
Q_ASSERT(currentSearchTab);
|
||||||
// Add item to search result list
|
// Add item to search result list
|
||||||
QStandardItemModel* cur_model = currentSearchTab->getCurrentSearchListModel();
|
QStandardItemModel* cur_model = currentSearchTab->getCurrentSearchListModel();
|
||||||
|
Q_ASSERT(cur_model);
|
||||||
int row = cur_model->rowCount();
|
int row = cur_model->rowCount();
|
||||||
cur_model->insertRow(row);
|
cur_model->insertRow(row);
|
||||||
|
|
||||||
|
@ -513,7 +525,7 @@ void SearchEngine::closeTab(int index) {
|
||||||
search_stopped = true;
|
search_stopped = true;
|
||||||
currentSearchTab = 0;
|
currentSearchTab = 0;
|
||||||
}
|
}
|
||||||
delete all_tab.takeAt(tabWidget->currentIndex());
|
delete all_tab.takeAt(index);
|
||||||
if(!all_tab.size()) {
|
if(!all_tab.size()) {
|
||||||
download_button->setEnabled(false);
|
download_button->setEnabled(false);
|
||||||
}
|
}
|
||||||
|
|
|
@ -63,11 +63,11 @@ private:
|
||||||
Bittorrent *BTSession;
|
Bittorrent *BTSession;
|
||||||
SupportedEngines *supported_engines;
|
SupportedEngines *supported_engines;
|
||||||
QTimer *searchTimeout;
|
QTimer *searchTimeout;
|
||||||
SearchTab *currentSearchTab;
|
QPointer<SearchTab> currentSearchTab;
|
||||||
#ifndef QT_4_5
|
#ifndef QT_4_5
|
||||||
QPushButton *closeTab_button;
|
QPushButton *closeTab_button;
|
||||||
#endif
|
#endif
|
||||||
QList<SearchTab*> all_tab; // To store all tabs
|
QList<QPointer<SearchTab> > all_tab; // To store all tabs
|
||||||
const SearchCategories full_cat_names;
|
const SearchCategories full_cat_names;
|
||||||
GUI *parent;
|
GUI *parent;
|
||||||
|
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue