Commit graph

528 commits

Author SHA1 Message Date
shenlebantongying 7daf9b4e56 fix: articleview style switching 2022-12-29 04:44:46 -05:00
shenleban tongying 2aeed5e705 clang-tidy: apply modernize-use-override 2022-12-29 02:14:53 -05:00
shenleban tongying 7fa87b6b42 fix: remove unused isScanningEnabled, the logic is handled in mainwindow::clipboardChanged() 2022-12-28 21:58:27 -05:00
shenleban tongying bdc43650bb fix: add a mini delay for selection clipboard 2022-12-28 21:36:02 -05:00
shenleban tongying a28aec3c9f fix: clipboard changes isn't ignored 2022-12-28 21:19:58 -05:00
shenleban tongying c6f895c15c fix: when darkreader mode changes in perferences, reload all pages 2022-12-28 06:13:42 -05:00
shenleban tongying 426f77fee5 refactor: remove duplicated favoriatePane shortcut setting 2022-12-27 05:27:59 -05:00
shenleban tongying 01c0b8d9d9 refactor: remove duplicated history shortcut setting 2022-12-27 01:52:20 -05:00
shenleban tongying 9828ef9dc8 perfect_dark: add toggle option to enable Dark Reader mode 2022-12-26 12:29:30 -05:00
shenleban tongying 07e92e8ac1 refactor: upgrade most of macro based Signal/Slot to new syntax 2022-12-25 21:08:17 -05:00
shenlebantongying 587aad1471 Perfect dark: remove explict Qt widget coloring 2022-12-25 01:53:53 -05:00
shenleban tongying fcfa4e43e2 refactor: replace escaped strings with raw strings via clang-tidy 2022-12-24 17:01:50 -05:00
Xiao YiFang 8100bc1ae3 fix: restrict darkmode within Windows platform.
fix #188
https://github.com/xiaoyifang/goldendict/issues/188#issuecomment-1362444703
2022-12-22 20:55:42 +08:00
shenleban tongying 3237054cf3 fix: memory leaks found by clang LeakSanitizer 2022-12-21 20:08:41 -05:00
Xiao YiFang e95f69ad55 fix: when in darkmode ,dictionary info panel background text is unclear 2022-12-16 21:00:02 +08:00
xiaoyifang 08c0df49e1 fix: change macro QT_NO_OPENSSL to QT_NO_SSL 2022-12-15 15:11:09 +08:00
Xiao YiFang 99bfb1c965 fix: reset style when changed from darkmode to normal 2022-12-13 20:01:18 +08:00
xiaoyifang fc0ad83879 winspecific: revert darkmode regression ,keep windows default style
when starting in windows for the first time
2022-12-12 09:47:47 +08:00
Xiao YiFang d969b63c1e add experimental darkmode
relate #188
2022-12-11 09:29:33 +08:00
xiaoyifang def764e5ac replace by-sa-2.0 icons 2022-12-05 10:21:50 +08:00
shenleban tongying 4452c06c3e Replace sptr with std::shared_ptr
* Make sptr an alias of std::shared_ptr
* Make old sptr's implicit conversion explict through std::make_shared
2022-11-28 22:54:31 -05:00
shenlebantongying 5a284d5c66
Implement "goldendict://nice" url scheme handler for windows and linux (#227)
* windows: add url scheme goldendict://

* linux: add url scheme goldendict:// handler
2022-11-28 09:24:49 +08:00
Xiao YiFang df2bb387e2 fix : add default groupid to the globalinstance 2022-11-24 20:34:21 +08:00
shenleban tongying 6e0a6cfa42 refactor & simplify ScanFlag:
All slots of ScanFlag are used just as functions calls.
2022-11-20 01:19:27 -05:00
shenleban tongying 79f8b05d40 Add showScanFlag condition to mainWindow's clipboardChange 2022-11-20 00:39:41 -05:00
shenlebantongying e0c193bcb6 Let scanPopup always constructed
Before: Construst Scanpopup only when both enableClipboardHotkey and enableScanPopup are true

Now: Always construct ScanPopup so that users can freely enable Copy->ScanPopup through navbar or tray
2022-11-19 22:35:06 -05:00
shenlebantongying 8232bc208d scan popup: Fix windows build 2022-11-19 21:54:22 -05:00
shenleban tongying 0d186dc33d fix: modifier keys should only affect Selection 2022-11-19 21:15:23 -05:00
shenleban tongying 06a296c99f Put conditions on the ClipboardChange for X11 2022-11-19 13:48:26 -05:00
shenleban tongying a4359bef3c Only process clipboard change when scanning enabled 2022-11-19 12:08:57 -05:00
shenleban tongying 9d9ad3ecc9 rename enableScanPopupAction to enableScanningAction which now governs both popup and sendToMainWindow kinds of scanning 2022-11-19 10:40:57 -05:00
shenleban tongying b3b740854a Unify trackClipboardChanges and enableScanPopupAction
* There is no difference between those two on Windows and MacOS which only support clipboard (Ctrl+C) scanning

* Q_WS_X11 was defined on Qt4, and it causes the super weird trackClipboardChanges to occur on Windows
2022-11-19 10:30:31 -05:00
shenleban tongying eb5806503a Remove enableScanPopup: Respect navBar toggling more
* Always construct Scan Popup object regardless of the setting
2022-11-19 09:30:58 -05:00
shenleban tongying edbc4d32cd Remove enableScanPopup: Let Scan popup's 💡 on navBar always visible 2022-11-19 09:25:53 -05:00
shenleban tongying 92bdec7119 Rename QAction * enableScanPopup
There is a var named exactly the same used in the same file!
2022-11-19 09:04:04 -05:00
shenleban tongying c08d584233 About copy version info: fix styles 2022-11-19 05:17:34 -05:00
shenlebantongying b7e1648356
Merge branch 'xiaoyifang:staged' into staged 2022-11-19 03:20:16 -05:00
Xiao YiFang 3653b616cf Merge commit '83d71daf03e468f784e41e834dc32c67fe2a5870' into staged 2022-11-18 20:23:32 +08:00
shenleban tongying 8d3b4165da Add "copy info" buttons to about dialog 2022-11-17 05:14:18 -05:00
Igor Kushnir 83d71daf03 Don't reset FTS Ignore* options on Preferences change
Accepting changes in Preferences dialog no longer disables two options
"Ignore words order" and "Ignore diacritics", which are configurable in
Full-text search dialog.
2022-11-16 18:51:26 +03:00
Xiao YiFang 6c72f650fe Merge remote-tracking branch 'gd/master' into staged 2022-11-15 20:02:24 +08:00
Igor Kushnir 5e8cab6d54 Show translateBoxWidget automatically when Words Zoom level decreases
When Search Pane is hidden, Words Zoom level is large and GoldenDict
main window's width is small, translateBoxWidget does not fit into the
toolbar and is hidden behind the toolbar extension button » on the right
side. Reducing Words Zoom level does not automatically make
translateBoxWidget visible until the user presses the toolbar extension
button or types text to be translated.

I haven't noticed any effect of the existing line of code that activates
groupList parent widget's layout whether Search Pane is visible or
hidden. This line was introduced in the commit that implemented
TranslateBox - da13998518. In this initial
implementation navToolbar was the parent of groupList, and
translateBoxWidget did not yet exist. I think that the introduction of
translateBoxWidget in 404a16442b obsoleted
this line of code, and so remove it here.

I have verified that this fix works as intended in the Qt 4 and the Qt 5
version both under KDE Plasma and Xfce.
2022-11-14 19:56:29 +02:00
Igor Kushnir f708c5068c Qt5: give focus to article view after last tab is closed
When the last tab is closed while the article view in it has focus,
Results Navigation Pane acquires focus in the Qt 4 version. This is OK,
because typed text is sent to the translate line and all shortcuts work.
In the Qt 5 version, depending on the value of the "Hide single tab"
option, either no widget has focus or the tab bar acquires focus in this
situation. This leads to issues described in the added comment.
2022-11-12 14:10:06 +03:00
Xiao YiFang f1468a5af4 feature: add support to import txt format file to favorite pannel
fix #198
2022-11-12 12:31:03 +08:00
Igor Kushnir 5f96f1f26e Linux-specific: don't force X11 focus unnecessarily
Focus is already transferred to GoldenDict in toggleMainWindow() only
the first time the main window is shown. At all subsequent requests to
show the main window, focus has to be forced with the workaround.
Checking focus asynchronously allows to resort to the workaround less
often.

Under Xfce: the timeout of 0 ms is almost always sufficient in the Qt 5
version, but is never enough in the Qt 4 version. The timeout of 4 ms is
always sufficient in both versions.

Under KDE Plasma: the timeout of 0 ms is rarely sufficient in the Qt 5
version. Unfortunately, with any timeout other than 0 ms, the Qt 5
version does not always get focus, which would be a serious regression,
so no other timeout can be used. The Qt 4 version does not always get
focus both with and without the timeout.
2022-11-05 22:03:51 +03:00
Igor Kushnir a321593ed1 Linux-specific: check correct X11 window ID
translateLine->internalWinId() always equals 0. When the show/hide main
window hotkey is triggered right after GoldenDict starts to system tray,
`wh` equals MainWindow::internalWinId(). A few more experiments confirm
that XGetInputFocus()'s output parameter `focus_return` is an ID of a
top-level window, not of an embedded widget child.
2022-11-05 22:03:51 +03:00
Igor Kushnir a27a29aca3 Linux-specific: don't open File menu after showing main window
Unfortunately the X11 focus workaround that opens the File menu cannot
be simply removed. Without this workaround, when KDE Plasma's Focus
stealing prevention level is set to Low (which is the default) or
higher, launching a second GoldenDict instance doesn't give focus to the
already running instance unless that instance's main window is currently
hidden into system tray or minimized. A workaround of hiding then
showing the main window makes the window flicker. Suggesting GoldenDict
users to set the focus stealing prevention level to None is not right,
because this setting is global and affects all applications.

Emulate a left mouse button click at position (0, 0) instead of (1, 1)
in order to waste 1 rather than 2 pixels to the left of the menu bar.

Introduce a new macro X11_MAIN_WINDOW_FOCUS_WORKAROUNDS to link the X11
focus workaround to the File menu workaround introduced in this commit.
This simplifies disabling all related workarounds at once. When the
focus workaround is replaced with a proper solution, the developer won't
forget to remove all obsolete workarounds if they are linked together.

Fixes #781.
2022-11-03 19:25:32 +03:00
Igor Kushnir 6dc74a7c7b Assign correct values to XButtonEvent::[xy]_root
The signature is: QPoint QWidget::mapToGlobal(const QPoint &) const;
2022-11-03 19:25:32 +03:00
Igor Kushnir 9330c89e4b Don't attempt to translate empty or whitespace-only text
Silently ignore empty or whitespace-only translation requests. It should
be clear to most users why GoldenDict ignores them.

The translated word ends up as the "word" URL query item value, which is
trimmed in ArticleNetworkAccessManager::getResource(). So the added
trimming in MainWindow::translateInputFinished() should be fine.

When a trimmed translated word was empty, InputPhrase::isValid()
returned false, ArticleNetworkAccessManager::getResource() returned a
null pointer and ArticleNetworkAccessManager::createRequest() fell back
to QNetworkAccessManager::createRequest(), which:
* failed silently in the Qt 4 version;
* displayed the
    Protocol "gdlookup" is unknown
    Failed to load URL gdlookup://localhost?word= &group=4.
    QtNetwork Error 301
error page in the Qt 5 version.

Fixes #1179.
2022-11-02 19:16:33 +03:00
Xiao YiFang 59ec8c4a48 [clean code]: remove macos lionsupport check
this macos version is too old .
2022-11-02 20:42:39 +08:00