mirror of
https://github.com/keepassxreboot/keepassxc.git
synced 2025-02-25 17:01:17 -05:00
Windows: Prevent white flicker when showing main window (#9637)
* Fixes #9603
This commit is contained in:
parent
534b61e9e8
commit
b612476c56
@ -707,13 +707,6 @@ MainWindow::~MainWindow()
|
|||||||
*/
|
*/
|
||||||
void MainWindow::restoreConfigState()
|
void MainWindow::restoreConfigState()
|
||||||
{
|
{
|
||||||
// start minimized if configured
|
|
||||||
if (config()->get(Config::GUI_MinimizeOnStartup).toBool()) {
|
|
||||||
hideWindow();
|
|
||||||
} else {
|
|
||||||
bringToFront();
|
|
||||||
}
|
|
||||||
|
|
||||||
if (config()->get(Config::OpenPreviousDatabasesOnStartup).toBool()) {
|
if (config()->get(Config::OpenPreviousDatabasesOnStartup).toBool()) {
|
||||||
const QStringList fileNames = config()->get(Config::LastOpenedDatabases).toStringList();
|
const QStringList fileNames = config()->get(Config::LastOpenedDatabases).toStringList();
|
||||||
for (const QString& filename : fileNames) {
|
for (const QString& filename : fileNames) {
|
||||||
@ -1370,6 +1363,24 @@ void MainWindow::databaseTabChanged(int tabIndex)
|
|||||||
updateEntryCountLabel();
|
updateEntryCountLabel();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void MainWindow::showEvent(QShowEvent* event)
|
||||||
|
{
|
||||||
|
Q_UNUSED(event)
|
||||||
|
#ifdef Q_OS_WIN
|
||||||
|
// Qt Hack - Prevent white flicker when showing window
|
||||||
|
QTimer::singleShot(50, this, [=] { setProperty("windowOpacity", 1.0); });
|
||||||
|
#endif
|
||||||
|
}
|
||||||
|
|
||||||
|
void MainWindow::hideEvent(QHideEvent* event)
|
||||||
|
{
|
||||||
|
Q_UNUSED(event)
|
||||||
|
#ifdef Q_OS_WIN
|
||||||
|
// Qt Hack - Prevent white flicker when showing window
|
||||||
|
setProperty("windowOpacity", 0.0);
|
||||||
|
#endif
|
||||||
|
}
|
||||||
|
|
||||||
void MainWindow::closeEvent(QCloseEvent* event)
|
void MainWindow::closeEvent(QCloseEvent* event)
|
||||||
{
|
{
|
||||||
if (m_appExiting) {
|
if (m_appExiting) {
|
||||||
|
@ -96,6 +96,8 @@ public slots:
|
|||||||
void restartApp(const QString& message);
|
void restartApp(const QString& message);
|
||||||
|
|
||||||
protected:
|
protected:
|
||||||
|
void showEvent(QShowEvent* event) override;
|
||||||
|
void hideEvent(QHideEvent* event) override;
|
||||||
void closeEvent(QCloseEvent* event) override;
|
void closeEvent(QCloseEvent* event) override;
|
||||||
void changeEvent(QEvent* event) override;
|
void changeEvent(QEvent* event) override;
|
||||||
void keyPressEvent(QKeyEvent* event) override;
|
void keyPressEvent(QKeyEvent* event) override;
|
||||||
|
12
src/main.cpp
12
src/main.cpp
@ -182,6 +182,10 @@ int main(int argc, char** argv)
|
|||||||
Application::bootstrap();
|
Application::bootstrap();
|
||||||
|
|
||||||
MainWindow mainWindow;
|
MainWindow mainWindow;
|
||||||
|
#ifdef Q_OS_WIN
|
||||||
|
// Qt Hack - Prevent white flicker when showing window
|
||||||
|
mainWindow.setProperty("windowOpacity", 0.0);
|
||||||
|
#endif
|
||||||
|
|
||||||
// Disable screen capture if not explicitly allowed
|
// Disable screen capture if not explicitly allowed
|
||||||
// This ensures any top-level windows (Main Window, Modal Dialogs, etc.) are excluded from screenshots
|
// This ensures any top-level windows (Main Window, Modal Dialogs, etc.) are excluded from screenshots
|
||||||
@ -203,6 +207,14 @@ int main(int argc, char** argv)
|
|||||||
mainWindow.openDatabase(filename, password, parser.value(keyfileOption));
|
mainWindow.openDatabase(filename, password, parser.value(keyfileOption));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// start minimized if configured
|
||||||
|
if (config()->get(Config::GUI_MinimizeOnStartup).toBool()) {
|
||||||
|
mainWindow.hideWindow();
|
||||||
|
} else {
|
||||||
|
mainWindow.bringToFront();
|
||||||
|
Application::processEvents();
|
||||||
|
}
|
||||||
|
|
||||||
int exitCode = Application::exec();
|
int exitCode = Application::exec();
|
||||||
|
|
||||||
// Check if restart was requested
|
// Check if restart was requested
|
||||||
|
Loading…
x
Reference in New Issue
Block a user