diff options
author | hjk <hjk@qt.io> | 2019-01-24 15:04:47 +0100 |
---|---|---|
committer | hjk <hjk@qt.io> | 2019-02-13 12:39:04 +0000 |
commit | e8a511f313422602626edc86d7669603fc52ea51 (patch) | |
tree | f33b8996cd1e0d99001c3ce11f09e8c28293cbcd | |
parent | 5f5e2543a5f6971fa1d07c9e84eba9742ba329f8 (diff) | |
download | qt-creator-e8a511f313422602626edc86d7669603fc52ea51.tar.gz |
Debugger: Change workaround for scrambled dock widget layouts
The workaround from 3d92a79a introduces a bug by itself: When a user moves
all docks off the bottom area, the workaround will trigger as the
condition "nothing below the tool bar" is met.
This here changes the condition to toolbar.width() != mainwindow.width(),
which will trigger in the known scrambled situations (there was always
something to the right of the toolbar), but not in the situation
described above.
Task-number: QTCREATORBUG-21669
Task-number: QTCREATORBUG-21455
Change-Id: Ic2eabbe2ed07352680add4fc5e3b5f6673600479
Reviewed-by: Eike Ziller <eike.ziller@qt.io>
-rw-r--r-- | src/plugins/debugger/debuggermainwindow.cpp | 24 |
1 files changed, 8 insertions, 16 deletions
diff --git a/src/plugins/debugger/debuggermainwindow.cpp b/src/plugins/debugger/debuggermainwindow.cpp index 2607c1fbd0..233f9d9a6d 100644 --- a/src/plugins/debugger/debuggermainwindow.cpp +++ b/src/plugins/debugger/debuggermainwindow.cpp @@ -372,24 +372,16 @@ void DebuggerMainWindowPrivate::fixupLayoutIfNeeded() { // Evil workaround for QTCREATORBUG-21455: In some so far unknown situation // the saveLayout/restoreLayout process leads to a situation where some docks - // does not end up below the perspective toolbar even though they were there + // do not end up below the perspective toolbar even though they were there // initially, leading to an awkward dock layout. - // This here tries to detect the situation (no other dock directly below the - // toolbar) and "corrects" that by restoring the default layout. - const QRect toolbarRect = m_toolBarDock->geometry(); - const int targetX = toolbarRect.left(); - const int targetY = toolbarRect.bottom(); - - const QList<QDockWidget *> docks = q->dockWidgets(); - for (QDockWidget *dock : docks) { - const QRect dockRect = dock->geometry(); - // 10 for some decoration wiggle room. Found something below? Good. - if (targetX == dockRect.left() && qAbs(targetY - dockRect.top()) < 10) - return; - } + // This here tries to detect the situation (sonmething else in the bottom + // area is at the right of the toolbar) "corrects" that by restoring the + // default layout. - qDebug() << "Scrambled dock layout found. Resetting it."; - resetCurrentPerspective(); + if (m_toolBarDock->width() != q->width()) { + qDebug() << "Scrambled dock layout found. Resetting it."; + resetCurrentPerspective(); + } } void DebuggerMainWindowPrivate::selectPerspective(Perspective *perspective) |