If app crashes during one minute after restoring crashed session,
show the restore page with options to the user next time instead
of showing restore page after every crash.
They can detach if the container is shared. Even if they are not shared,
using const method when possible is good practice.
Differential Revision: https://phabricator.kde.org/D9730
Otherwise QWebEngineView first creates its underlying view with very
small size which then gets resized to correct size on first show event.
Also remove all calls to setUpdatesEnabled on window during session restore,
it doesn't seem to have any effect anymore.
Queries are now always executed on correct database instance.
Databases are also stored in thread local storage instead of in hash
table with mutex.
Closes#2498
Web page is now correctly focused when opening browser window
or opening/restoring sessions.
This is still not absolutely reliable solution as it uses delay
to change focus to webview, because QWebEngineView doesn't accept
focus until after it is initialized.
Summary:
This streamlines the code across all platforms and outsources the path
building to QSP which implements the multi-platform logic.
This keeps AppData lookup paths where they were (with additional lookup
paths from QSP).
Config location changes on Windows (from local to roaming) and OS X
(from `Application Support` to `Preferences`).
Cache also changes location on Windows and OS X.
Temporary directory management is entirely outsourced to QTemporaryDir
which is kept in a scoped pointer so it gets cleaned up on exit.
Reviewers: drosca
Reviewed By: drosca
Differential Revision: https://phabricator.kde.org/D7767
Summary:
NB: this changes the standard config name of default constructed QSettings
(a quick grep seems to suggest there is no default constructed QSettings
though, so this should be fine).
Aligning the applicationName with the spelling in the installation paths
on case sensitive systems allows us to use QStandardPaths' built-in
handling for application-specific paths instead of having to manually
append /falkon to various paths.
Test Plan: still seems to be working on linux
Reviewers: drosca
Reviewed By: drosca
Differential Revision: https://phabricator.kde.org/D7721
Summary:
this is, for now, backwards compatible. in the long run a full move
to QSP instead of manually doing path lookup would be good though.
as that ideally means aligning capitalization between appname and on-disk
paths we'll avoid that for now.
fixes data lookup from XDG paths making the binary partially relocatable
and properly configurable via XDG paths (e.g. corporate branding or what
have you)
Test Plan: - theme path resolution now walks all XDG paths
Reviewers: drosca
Reviewed By: drosca
Differential Revision: https://phabricator.kde.org/D7600
Pinned tabs are saved alongside normal tabs in a session file.
If user don't have session restore enabled, pinned tabs are saved
and restored from a special pinnedtabs.dat file which uses different
codepath.
It has also another problem that it only saves pinned tabs for last
browser window, which sometimes may be confusing and lead to losing
the pinned tabs.
* Add initial printing support with QtWebEngine >= 5.7.0
This works by printing to PDF first, then sending the PDF to a printer
if printing to a physical printer was requested.
On *nix (including Mac OS X), we use the lpr command, which is typically
provided by CUPS nowadays. Currently, no options beyond the printer name
are passed, there is room for improvement there. (Okular has a
FilePrinter class that handles this in a more sophisticated way.)
On Windows, we use ShellExecuteW with the "printto" verb. In that case,
the printer name is unfortunately the only thing that can be passed. The
user experience may also be suboptimal depending on the PDF viewer
installed on the system. (E.g., Adobe Reader is reported to ignore
SW_HIDE.) And if there is no PDF viewer installed at all, it will of
course not work at all. But it is the best we can do without bundling
something like GhostScript (or requiring the user to install it).
* Printing: Let lpr autoremove the temporary file instead of QTemporaryFile
Only lpr knows for sure when it is safe to delete the temporary file.
* Printing: Use the callback version of printToPdf instead of the file one
The file version is also asynchronous and does not report when it is
done.
* Printing: Use async QProcess API instead of QProcess::execute to run lpr
This also required making tempFile a QTemporaryFile * instead of a
QTemporaryFile on the stack, because QTemporaryFile is a QObject and
cannot be copied.
* Printing: Adapt the FilePrinter from Okular to pass correct lpr args
The license of those files is GPLv2+, which is compatible with
QupZilla's GPLv3+ licensing.
* ensured the window geometry is remembered on OS X
It was always starting based on:
int windowWidth = desktop->availableGeometry().width() / 1.3;
int windowHeight = desktop->availableGeometry().height() / 1.3;
because quitApp isn’t called on OS X.
* ensured the window geometry is remembered on OS X (v2)
* tweaked coding style
Instead of custom handling of shift + mouse click, use
QWebEngineView::createWindow. It should fix the issue with
JavaScript catching the mouse click performing some action
and QupZilla trying to open new window.
Closes#1898
QEvent::ApplicationActivate is sent when incompatible profile
warning QMessageBox is shown. We should not create new BrowserWindow
at this point as the initialization is not yet completed.
New window should really be only created when there is no
application window at all.
Closes#1890
Build time was a nice idea, but it only saved build time for
qzcommon.cpp (which was builded only with clean build) and it
also breaks reproducible builds.
A variation of this patch is already used by some distros.