Fixed restore dock widget

* fixed CDockWidget::restoreFloatingSizeAndPositionDeferred
* CMarginsInput::changedMargins needs direct connection
* reset setting extended
This commit is contained in:
Klaus Basan
2019-05-31 01:41:57 +02:00
committed by Mat Sutcliffe
parent ce0426707b
commit 6f6a3d8314
2 changed files with 24 additions and 9 deletions

View File

@@ -63,7 +63,7 @@ namespace BlackGui
this->setContextMenuPolicy(Qt::CustomContextMenu); this->setContextMenuPolicy(Qt::CustomContextMenu);
connect(this, &CDockWidget::customContextMenuRequested, this, &CDockWidget::showContextMenu, Qt::QueuedConnection); connect(this, &CDockWidget::customContextMenuRequested, this, &CDockWidget::showContextMenu, Qt::QueuedConnection);
connect(m_input, &CMarginsInput::changedMargins, this, &CDockWidget::menuChangeMargins, Qt::QueuedConnection); connect(m_input, &CMarginsInput::changedMargins, this, &CDockWidget::menuChangeMargins); // only works direct, as QMargins is not registered: 'QMargins' is registered using qRegisterMetaTyp
// connect // connect
connect(sGui, &CGuiApplication::styleSheetsChanged, this, &CDockWidget::onStyleSheetsChanged, Qt::QueuedConnection); connect(sGui, &CGuiApplication::styleSheetsChanged, this, &CDockWidget::onStyleSheetsChanged, Qt::QueuedConnection);
@@ -392,10 +392,10 @@ namespace BlackGui
} }
// State actions (windows state) // State actions (windows state)
contextMenu->addAction(CIcons::load16(), "Restore from settings", this, &CDockWidget::restoreFromSettings); contextMenu->addAction(CIcons::load16(), "Restore from settings", this, &CDockWidget::restoreFromSettings, Qt::QueuedConnection);
contextMenu->addAction(CIcons::save16(), "Save state", this, &CDockWidget::saveCurrentStateToSettings); contextMenu->addAction(CIcons::save16(), "Save state", this, &CDockWidget::saveCurrentStateToSettings, Qt::QueuedConnection);
contextMenu->addAction(CIcons::refresh16(), "Reset to defaults", this, &CDockWidget::resetSettings); contextMenu->addAction(CIcons::refresh16(), "Reset to defaults", this, &CDockWidget::resetSettings, Qt::QueuedConnection);
contextMenu->addAction(CIcons::refresh16(), "Reset position", this, &CDockWidget::resetPosition); contextMenu->addAction(CIcons::refresh16(), "Reset position", this, &CDockWidget::resetPosition, Qt::QueuedConnection);
m_input->setMargins(this->contentsMargins()); m_input->setMargins(this->contentsMargins());
contextMenu->addAction(CIcons::tableSheet16(), "Margins", this, &CDockWidget::dummy); contextMenu->addAction(CIcons::tableSheet16(), "Margins", this, &CDockWidget::dummy);
@@ -417,6 +417,9 @@ namespace BlackGui
// and move // and move
this->resetPosition(); this->resetPosition();
// deferred int from settings
this->restoreFloatingSizeAndPositionDeferred();
} }
QString CDockWidget::windowTitleOrBackup() const QString CDockWidget::windowTitleOrBackup() const
@@ -441,6 +444,9 @@ namespace BlackGui
QDockWidget::setWindowTitle(m_windowTitleBackup); QDockWidget::setWindowTitle(m_windowTitleBackup);
} }
this->setNullTitleBarWidget(); this->setNullTitleBarWidget();
if (m_wasFrameless) { this->setFrameless(true); }
/**
if (!m_wasAlreadyFloating) if (!m_wasAlreadyFloating)
{ {
this->initialFloating(); this->initialFloating();
@@ -448,9 +454,10 @@ namespace BlackGui
} }
else else
{ {
if (m_wasFrameless) { this->setFrameless(true); }
this->restoreFloatingSizeAndPositionDeferred(); // after everything was applied move and resize this->restoreFloatingSizeAndPositionDeferred(); // after everything was applied move and resize
} }
**/
m_statusBar.show(); m_statusBar.show();
m_wasAlreadyFloating = true; m_wasAlreadyFloating = true;
} }
@@ -605,11 +612,17 @@ namespace BlackGui
void CDockWidget::restoreFloatingSizeAndPositionDeferred() void CDockWidget::restoreFloatingSizeAndPositionDeferred()
{ {
if (!m_lastFloatingSize.isValid() || m_lastFloatingPosition.isNull()) { return; } // if (!m_lastFloatingSize.isValid() || m_lastFloatingPosition.isNull()) { return; }
QPointer<CDockWidget> myself(this); QPointer<CDockWidget> myself(this);
QTimer::singleShot(1000, this, [ = ] QTimer::singleShot(2500, this, [ = ]
{ {
if (myself) { myself->restoreFloatingSizeAndPosition(); } if (!myself) { return; }
const Qt::KeyboardModifiers km = QGuiApplication::queryKeyboardModifiers();
const bool shift = km.testFlag(Qt::ShiftModifier);
if (shift) { return; }
if (!sGui || sGui->isCmdWindowSizeResetSet()) { return; }
myself->restoreFromSettings();
}); });
} }

View File

@@ -33,6 +33,8 @@ namespace BlackGui
{ {
this->resetMarginsToDefault(); this->resetMarginsToDefault();
m_geometry = ""; m_geometry = "";
m_frameless = false;
m_floating = false;
} }
void CDockWidgetSettings::setMarginsWhenFramelessFloating(const QMargins &margins) void CDockWidgetSettings::setMarginsWhenFramelessFloating(const QMargins &margins)