Fixed doubling ready() signal when searching for word list
authorBartosz Szatkowski <bulislaw@linux.com>
Fri, 20 Aug 2010 10:02:00 +0000 (12:02 +0200)
committerBartosz Szatkowski <bulislaw@linux.com>
Fri, 20 Aug 2010 10:02:00 +0000 (12:02 +0200)
trunk/src/base/backbone/backbone.cpp

index 360448d..05e17f0 100644 (file)
@@ -180,6 +180,7 @@ void Backbone::stopSearching() {
 
 
 void Backbone::search(QString word){
+    qDebug() << "SEEEEEEEEEARCH";
     _result.clear();
     mappedSearch = word.toLower();
 
@@ -244,7 +245,11 @@ void Backbone::addDictionary(CommonDictInterface *dict, bool active) {
 
 
 void Backbone::translationReady() {
+    bool changed = 0; // prevents doubling ready() signal, when both if are
+                      //  executed in one translationReady() call then second
+                      // call doubles ready*() emit without any new data
     if(!dictFin && _innerResult.isFinished()) {
+        changed = 1;
         dictFin = 1;
         QFutureIterator<QList<Translation*> > it(_innerResult);
 
@@ -256,6 +261,7 @@ void Backbone::translationReady() {
     }
 
     if(!bookmarkFin && _innerBookmarks.isFinished()) {
+        changed = 1;
         bookmarkFin = 1;
         QList<Translation*> list = _innerBookmarks.result();
 
@@ -263,8 +269,10 @@ void Backbone::translationReady() {
                 _result.insert(trans->key().toLower(), trans);
     }
 
-    if(!stopped && bookmarkFin && dictFin)
+    if(!stopped && bookmarkFin && dictFin && changed) {
+        qDebug() << "EMITTTTTT";
         Q_EMIT ready();
+        }
 }
 
 QStringList Backbone::getFilesFromDir(QString dir, QStringList nameFilter) {