mirror of
https://github.com/keepassxreboot/keepassxc.git
synced 2024-10-01 01:26:01 -04:00
Windows: Prevent white flicker when showing main window (#9637)
* Fixes #9603
This commit is contained in:
parent
2fe647fd7a
commit
a81771207f
@ -707,13 +707,6 @@ MainWindow::~MainWindow()
|
||||
*/
|
||||
void MainWindow::restoreConfigState()
|
||||
{
|
||||
// start minimized if configured
|
||||
if (config()->get(Config::GUI_MinimizeOnStartup).toBool()) {
|
||||
hideWindow();
|
||||
} else {
|
||||
bringToFront();
|
||||
}
|
||||
|
||||
if (config()->get(Config::OpenPreviousDatabasesOnStartup).toBool()) {
|
||||
const QStringList fileNames = config()->get(Config::LastOpenedDatabases).toStringList();
|
||||
for (const QString& filename : fileNames) {
|
||||
@ -1370,6 +1363,24 @@ void MainWindow::databaseTabChanged(int tabIndex)
|
||||
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)
|
||||
{
|
||||
if (m_appExiting) {
|
||||
|
@ -96,6 +96,8 @@ public slots:
|
||||
void restartApp(const QString& message);
|
||||
|
||||
protected:
|
||||
void showEvent(QShowEvent* event) override;
|
||||
void hideEvent(QHideEvent* event) override;
|
||||
void closeEvent(QCloseEvent* event) override;
|
||||
void changeEvent(QEvent* 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();
|
||||
|
||||
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
|
||||
// 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));
|
||||
}
|
||||
|
||||
// start minimized if configured
|
||||
if (config()->get(Config::GUI_MinimizeOnStartup).toBool()) {
|
||||
mainWindow.hideWindow();
|
||||
} else {
|
||||
mainWindow.bringToFront();
|
||||
Application::processEvents();
|
||||
}
|
||||
|
||||
int exitCode = Application::exec();
|
||||
|
||||
// Check if restart was requested
|
||||
|
Loading…
Reference in New Issue
Block a user