diff --git a/.clang-format b/.clang-format index a845f039..f6756c96 100644 --- a/.clang-format +++ b/.clang-format @@ -1,29 +1,65 @@ # Format Style Options - Created with Clang Power Tools --- -AlignAfterOpenBracket: Align -AlignConsecutiveAssignments: AcrossComments +AccessModifierOffset: -1 +AlignAfterOpenBracket: DontAlign +AlignConsecutiveAssignments: Consecutive AlignEscapedNewlines: Left -AlignOperands: Align +AlignOperands: DontAlign +AlignTrailingComments: false AllowAllArgumentsOnNextLine: false -AllowShortBlocksOnASingleLine: false -AllowShortFunctionsOnASingleLine: None -AllowShortIfStatementsOnASingleLine: Never +AllowShortBlocksOnASingleLine: Empty +AllowShortLambdasOnASingleLine: None +AllowShortEnumsOnASingleLine: false +AlwaysBreakBeforeMultilineStrings: true BasedOnStyle: LLVM BinPackArguments: false BinPackParameters: false +BraceWrapping: + AfterCaseLabel: false + AfterClass: true + AfterControlStatement: true + AfterEnum: false + AfterFunction: true + AfterNamespace: false + AfterObjCDeclaration: false + AfterStruct: true + AfterUnion: true + AfterExternBlock: false + BeforeCatch: false + BeforeElse: true + IndentBraces: false + SplitEmptyFunction: true + SplitEmptyRecord: false + SplitEmptyNamespace: false + BeforeLambdaBody: false + BeforeWhile: false BreakBeforeBinaryOperators: NonAssignment -BreakBeforeBraces: Allman +BreakBeforeBraces: Custom +BreakBeforeTernaryOperators: false BreakConstructorInitializers: AfterColon +BreakStringLiterals: false ColumnLimit: 120 ConstructorInitializerAllOnOneLineOrOnePerLine: true -ConstructorInitializerIndentWidth : 2 ContinuationIndentWidth: 2 -MaxEmptyLinesToKeep: 1 +DeriveLineEnding: false +EmptyLineBeforeAccessModifier: Leave +ExperimentalAutoDetectBinPacking: true +FixNamespaceComments: false +IncludeBlocks: Regroup +IndentCaseLabels: true +IndentPPDirectives: BeforeHash +MaxEmptyLinesToKeep: 2 +NamespaceIndentation: Inner PointerAlignment: Middle +ReflowComments: false SortIncludes: false SortUsingDeclarations: false +SpaceAfterCStyleCast: true +SpaceBeforeCtorInitializerColon: false +SpaceBeforeInheritanceColon: false SpaceBeforeParens: Never SpacesInAngles: true +SpacesInConditionalStatement: true SpacesInParentheses: true SpacesInSquareBrackets: true UseTab: Never diff --git a/article_maker.cc b/article_maker.cc index b27c53fd..d93273f6 100644 --- a/article_maker.cc +++ b/article_maker.cc @@ -429,9 +429,10 @@ ArticleRequest::ArticleRequest( data.resize( header.size() ); memcpy( &data.front(), header.data(), header.size() ); - // Accumulate main forms + //clear founded dicts. emit GlobalBroadcaster::instance()->dictionaryClear( ActiveDictIds{word} ); + // Accumulate main forms for( unsigned x = 0; x < activeDicts.size(); ++x ) { sptr< Dictionary::WordSearchRequest > s = activeDicts[ x ]->findHeadwordsForSynonym( gd::toWString( word ) ); diff --git a/articleview.cc b/articleview.cc index 8d141f00..9263e01e 100644 --- a/articleview.cc +++ b/articleview.cc @@ -401,6 +401,9 @@ void ArticleView::showDefinition( Config::InputPhrase const & phrase, unsigned g Contexts const & contexts_ ) { currentWord = phrase.phrase.trimmed(); + if( currentWord.isEmpty() ) + return; + historyMode = false; currentActiveDictIds.clear(); // first, let's stop the player audioPlayer->stop(); @@ -484,6 +487,9 @@ void ArticleView::showDefinition( QString const & word, QStringList const & dict if( dictIDs.isEmpty() ) return; currentWord = word.trimmed(); + if( currentWord.isEmpty() ) + return; + historyMode = false; // first, let's stop the player audioPlayer->stop(); @@ -1623,6 +1629,8 @@ void ArticleView::back() if ( canGoBack() ) { saveHistoryUserData(); + currentActiveDictIds.clear(); + historyMode = true; ui.definition->back(); } } @@ -1630,6 +1638,8 @@ void ArticleView::back() void ArticleView::forward() { saveHistoryUserData(); + currentActiveDictIds.clear(); + historyMode = true; ui.definition->forward(); } @@ -2078,7 +2088,7 @@ void ArticleView::resourceDownloadFinished() { if ( (*i)->isFinished() ) { - if ( (*i)->dataSize() > 0 ) + if ( (*i)->dataSize() >= 0 ) { // Ok, got one finished, all others are irrelevant now @@ -2619,7 +2629,7 @@ void ArticleView::highlightAllFtsOccurences( QWebEnginePage::FindFlags flags ) } void ArticleView::setActiveDictIds(ActiveDictIds ad) { - if (ad.word == currentWord) { + if (ad.word == currentWord || historyMode) { // ignore all other signals. qDebug() << "receive dicts, current word:" << currentWord << ad.word << ":" << ad.dictIds; currentActiveDictIds << ad.dictIds; @@ -2712,10 +2722,6 @@ void ArticleView::performFtsFindOperation( bool backwards ) #endif ui.ftsSearchStatusLabel->setText( searchStatusMessage( ftsPosition + 1, allMatches.size() ) ); - // Store new highlighted selection - // ui.definition->page()-> - // runJavaScript( QString( "%1=window.getSelection().getRangeAt(0);_=0;" ) - // .arg( rangeVarName ) ); } void ArticleView::on_ftsSearchPrevious_clicked() @@ -2759,7 +2765,7 @@ void ResourceToSaveHandler::downloadFinished() { if ( (*i)->isFinished() ) { - if ( (*i)->dataSize() > 0 && !alreadyDone ) + if ( (*i)->dataSize() >= 0 && !alreadyDone ) { QByteArray resourceData; vector< char > const & data = (*i)->getFullData(); diff --git a/articleview.hh b/articleview.hh index c4131053..32f5b9b3 100644 --- a/articleview.hh +++ b/articleview.hh @@ -70,6 +70,8 @@ class ArticleView: public QFrame /// current active dict id list; QStringList currentActiveDictIds; + bool historyMode=false; + //current active dictionary id; QString activeDictId; diff --git a/dictionarybar.cc b/dictionarybar.cc index 63738df7..a909cc7e 100644 --- a/dictionarybar.cc +++ b/dictionarybar.cc @@ -16,8 +16,7 @@ DictionaryBar::DictionaryBar( QWidget * parent, mutedDictionaries( 0 ), configEvents( events ), editDictionaryCommand( _editDictionaryCommand ), - maxDictionaryRefsInContextMenu(maxDictionaryRefsInContextMenu_), - timerId( 0 ) + maxDictionaryRefsInContextMenu(maxDictionaryRefsInContextMenu_) { setObjectName( "dictionaryBar" ); @@ -28,8 +27,6 @@ DictionaryBar::DictionaryBar( QWidget * parent, connect( this, SIGNAL(actionTriggered(QAction*)), this, SLOT(actionWasTriggered(QAction*)) ); - - installEventFilter( this ); } static QString elideDictName( QString const & name ) @@ -352,42 +349,3 @@ void DictionaryBar::dictsPaneClicked( const QString & id ) } } } - -bool DictionaryBar::eventFilter( QObject * obj, QEvent * ev ) -{ - if(obj == this && !isFloating() ) - { - QPoint pt = parentWidget()->mapFromGlobal( QCursor::pos() ); - switch( ev->type() ) - { - case QEvent::Leave : if( geometry().contains( pt ) ) - { - if( timerId ) - killTimer( timerId ); - timerId = startTimer( 500 ); - return true; - } - break; - case QEvent::Enter : if( timerId != 0) - { - killTimer( timerId ); - timerId = 0; - } - break; - case QEvent::Timer: if( static_cast< QTimerEvent * >( ev )->timerId() == timerId ) - { - if( !geometry().contains( pt ) ) - { - killTimer( timerId ); - timerId = 0; - QEvent event( QEvent::Leave ); - QApplication::sendEvent( this, &event ); - } - return true; - } - break; - default: break; - } - } - return false; -} diff --git a/dictionarybar.hh b/dictionarybar.hh index d108e381..2f886d24 100644 --- a/dictionarybar.hh +++ b/dictionarybar.hh @@ -61,10 +61,6 @@ private: QList< QAction * > dictActions; QAction * maxDictionaryRefsAction; - int timerId; - - virtual bool eventFilter( QObject *, QEvent * ); - protected: void contextMenuEvent( QContextMenuEvent * event ); diff --git a/goldendict.pro b/goldendict.pro index 381d6a21..29e8914a 100644 --- a/goldendict.pro +++ b/goldendict.pro @@ -226,8 +226,7 @@ mac { LIBS += -L/opt/homebrew/lib -L/usr/local/lib -framework AppKit -framework Carbon } - OBJECTIVE_SOURCES += lionsupport.mm \ - machotkeywrapper.mm \ + OBJECTIVE_SOURCES += machotkeywrapper.mm \ macmouseover.mm \ speechclient_mac.mm ICON = icons/macicon.icns diff --git a/lionsupport.h b/lionsupport.h deleted file mode 100644 index 2fd1d897..00000000 --- a/lionsupport.h +++ /dev/null @@ -1,23 +0,0 @@ -#ifndef LIONSUPPORT_H -#define LIONSUPPORT_H - -#include "mainwindow.hh" - -class LionSupport -{ -public: - /** - * Returns whether the current system is Lion. - */ - static bool isLion(); - - /** - * Adds fullscreen button to window for Lion. - */ - static void addFullscreen(MainWindow *window); - - //Check for retina display - static bool isRetinaDisplay(); -}; - -#endif // LIONSUPPORT_H diff --git a/lionsupport.mm b/lionsupport.mm deleted file mode 100644 index 1917b8f9..00000000 --- a/lionsupport.mm +++ /dev/null @@ -1,34 +0,0 @@ -#include -#include -#include "lionsupport.h" - -bool LionSupport::isLion() -{ - NSString *string = [NSString string]; - // this selector was added only in Lion. so we can check if it's responding, we are on Lion - return [string respondsToSelector:@selector(linguisticTagsInRange:scheme:options:orthography:tokenRanges:)]; -} - -void LionSupport::addFullscreen(MainWindow *window) -{ -#if defined(MAC_OS_X_VERSION_10_7) && MAC_OS_X_VERSION_MAX_ALLOWED >= MAC_OS_X_VERSION_10_7 - if (isLion()) // checks if lion is running - { - NSView *nsview = (NSView *) window->winId(); - NSWindow *nswindow = [nsview window]; - [nswindow setCollectionBehavior:NSWindowCollectionBehaviorFullScreenPrimary]; - } -#else -#warning No fullscreen support will be included in this build -#endif -} - -bool LionSupport::isRetinaDisplay() -{ -#if defined(MAC_OS_X_VERSION_10_7) && MAC_OS_X_VERSION_MAX_ALLOWED >= MAC_OS_X_VERSION_10_7 - return( [ [ NSScreen mainScreen ] respondsToSelector:@selector( backingScaleFactor ) ] - && [ [ NSScreen mainScreen ] backingScaleFactor ] > 1.5 ); -#else - return false; -#endif -} diff --git a/mainwindow.cc b/mainwindow.cc index a7e7de0b..af6bbe5b 100644 --- a/mainwindow.cc +++ b/mainwindow.cc @@ -50,7 +50,6 @@ #include "resourceschemehandler.h" #ifdef Q_OS_MAC -#include "lionsupport.h" #include "macmouseover.hh" #endif @@ -907,10 +906,6 @@ MainWindow::MainWindow( Config::Class & cfg_ ): history.setSaveInterval( cfg.preferences.historyStoreInterval ); - #ifdef Q_OS_MAC - LionSupport::addFullscreen(this); - #endif - ui.centralWidget->grabGesture( Gestures::GDPinchGestureType ); ui.centralWidget->grabGesture( Gestures::GDSwipeGestureType );