Merge branch 'staged' into dev

This commit is contained in:
Xiao YiFang 2022-07-17 18:24:44 +08:00
commit a978569db9
6 changed files with 22 additions and 5 deletions

View file

@ -26,7 +26,7 @@ This code has been run and tested on Windows 10/11, Ubuntu Linux, Mac OS X.
qtdeclarative5-dev libxtst-dev liblzo2-dev libbz2-dev \ qtdeclarative5-dev libxtst-dev liblzo2-dev libbz2-dev \
libao-dev libavutil-dev libavformat-dev libtiff5-dev libeb16-dev \ libao-dev libavutil-dev libavformat-dev libtiff5-dev libeb16-dev \
libqt5svg5-dev libqt5x11extras5-dev qttools5-dev \ libqt5svg5-dev libqt5x11extras5-dev qttools5-dev \
qttools5-dev-tools qtmultimedia5-dev libqt5multimedia5-plugins qttools5-dev-tools qtmultimedia5-dev libqt5multimedia5-plugins libqt5webchannel5-dev qtwebengine5-dev
### Fedora 35 ### Fedora 35
``` ```

View file

@ -446,6 +446,8 @@ void ArticleRequest::altSearchFinished()
if ( altsDone ) if ( altsDone )
return; return;
emit GlobalBroadcaster::instance()->dictionaryClear( ActiveDictIds{word} );
// Check every request for finishing // Check every request for finishing
for( list< sptr< Dictionary::WordSearchRequest > >::iterator i = for( list< sptr< Dictionary::WordSearchRequest > >::iterator i =
altSearches.begin(); i != altSearches.end(); ) altSearches.begin(); i != altSearches.end(); )

View file

@ -360,6 +360,9 @@ ArticleView::ArticleView( QWidget * parent, ArticleNetworkAccessManager & nm, Au
connect(GlobalBroadcaster::instance(), SIGNAL( dictionaryChanges(ActiveDictIds)), this, connect(GlobalBroadcaster::instance(), SIGNAL( dictionaryChanges(ActiveDictIds)), this,
SLOT(setActiveDictIds(ActiveDictIds))); SLOT(setActiveDictIds(ActiveDictIds)));
connect( GlobalBroadcaster::instance(), &GlobalBroadcaster::dictionaryClear, this,
&ArticleView::dictionaryClear );
channel = new QWebChannel(ui.definition->page()); channel = new QWebChannel(ui.definition->page());
agent = new ArticleViewAgent(this); agent = new ArticleViewAgent(this);
attachWebChannelToHtml(); attachWebChannelToHtml();
@ -2609,16 +2612,25 @@ void ArticleView::highlightAllFtsOccurences( QWebEnginePage::FindFlags flags )
} }
void ArticleView::setActiveDictIds(ActiveDictIds ad) { void ArticleView::setActiveDictIds(ActiveDictIds ad) {
// ignore all other signals.
qDebug() << "receive dicts, current word:" << currentWord << ad.word << ":" << ad.dictIds;
if (ad.word == currentWord) { if (ad.word == currentWord) {
qDebug() << "receive dicts, current word accept:" << currentWord; // ignore all other signals.
qDebug() << "receive dicts, current word:" << currentWord << ad.word << ":" << ad.dictIds;
currentActiveDictIds << ad.dictIds; currentActiveDictIds << ad.dictIds;
currentActiveDictIds.removeDuplicates(); currentActiveDictIds.removeDuplicates();
emit updateFoundInDictsList(); emit updateFoundInDictsList();
} }
} }
void ArticleView::dictionaryClear( ActiveDictIds ad )
{
// ignore all other signals.
if( ad.word == currentWord )
{
qDebug() << "clear current dictionaries:" << currentWord;
currentActiveDictIds.clear();
}
}
//todo ,futher refinement? //todo ,futher refinement?
void ArticleView::performFtsFindOperation( bool backwards ) void ArticleView::performFtsFindOperation( bool backwards )
{ {

View file

@ -367,6 +367,8 @@ private slots:
void setActiveDictIds(ActiveDictIds); void setActiveDictIds(ActiveDictIds);
void dictionaryClear( ActiveDictIds ad );
private: private:
/// Deduces group from the url. If there doesn't seem to be any group, /// Deduces group from the url. If there doesn't seem to be any group,

View file

@ -28,6 +28,7 @@ public:
signals: signals:
void dictionaryChanges( ActiveDictIds ad ); void dictionaryChanges( ActiveDictIds ad );
void dictionaryClear( ActiveDictIds ad );
}; };
#endif // GLOBAL_GLOBALBROADCASTER_H #endif // GLOBAL_GLOBALBROADCASTER_H

View file

@ -54,7 +54,7 @@ void IframeSchemeHandler::requestStarted(QWebEngineUrlRequestJob *requestJob)
// remove existed base tag // remove existed base tag
articleString.remove( baseTag ) ; articleString.remove( baseTag ) ;
QRegularExpression headTag( "<head\\s+.*?>", QRegularExpression headTag( "<head\\b.*?>",
QRegularExpression::CaseInsensitiveOption QRegularExpression::CaseInsensitiveOption
| QRegularExpression::DotMatchesEverythingOption ); | QRegularExpression::DotMatchesEverythingOption );
auto match = headTag.match( articleString, 0 ); auto match = headTag.match( articleString, 0 );