[kde-doc-english] [trojita] src/Gui: GUI: wait a bit before reacting to screen resolution changes
Jan Kundrát
jkt at flaska.net
Sun May 26 23:39:49 UTC 2013
Git commit f6e8f4518f67932f00ccf835245990a96e09be59 by Jan Kundrát.
Committed on 26/05/2013 at 22:56.
Pushed by jkt into branch 'master'.
GUI: wait a bit before reacting to screen resolution changes
M +12 -1 src/Gui/Window.cpp
http://commits.kde.org/trojita/f6e8f4518f67932f00ccf835245990a96e09be59
diff --git a/src/Gui/Window.cpp b/src/Gui/Window.cpp
index beb882b..18552af 100644
--- a/src/Gui/Window.cpp
+++ b/src/Gui/Window.cpp
@@ -134,7 +134,6 @@ MainWindow::MainWindow(): QMainWindow(), model(0),
recoverDrafts();
- connect(qApp->desktop(), SIGNAL(resized(int)), this, SLOT(desktopGeometryChanged()));
desktopGeometryChanged();
if (m_actionLayoutWide->isEnabled() &&
QSettings().value(Common::SettingsNames::guiMainWindowLayout) == Common::SettingsNames::guiMainWindowLayoutWide) {
@@ -144,6 +143,18 @@ MainWindow::MainWindow(): QMainWindow(), model(0),
} else {
m_actionLayoutCompact->trigger();
}
+
+ // The problem with QDesktopWidget::resized is that (at least on jkt's box right now), it gets even before the screen size
+ // actually changes. This has a funny side effect of not disabling the wide mode on switching to tiny screen, and (which
+ // might be worse) not enabling the option of the wide layout when switching to a bigger screen.
+ // I have no idea whether it's a bug in Qt, in KWin, in my Xorg stack or somewhere else, but I know that I have to workaround
+ // it here, at least for now.
+ QTimer *delayedResize = new QTimer(this);
+ delayedResize->setSingleShot(true);
+ // Let's hope that this value is long enough for the output to settle, yet short enough to not be overly annoying
+ delayedResize->setInterval(3000);
+ connect(delayedResize, SIGNAL(timeout()), this, SLOT(desktopGeometryChanged()));
+ connect(qApp->desktop(), SIGNAL(resized(int)), delayedResize, SLOT(start()));
}
void MainWindow::defineActions()
More information about the kde-doc-english
mailing list