Save position and size of window after is has been moved/resized
* Remember new size after user resized the window * Remember new position after user repositioned window and using explicit coordinates has been configured in the appearance settings
This commit is contained in:
parent
089100c7ab
commit
784630104d
|
@ -513,13 +513,22 @@ bool AppearanceOptionPage::apply()
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void AppearanceOptionPage::resetPositioningSettings()
|
||||||
|
{
|
||||||
|
const auto &v = values();
|
||||||
|
const auto &settings = v.appearance;
|
||||||
|
ui()->widthSpinBox->setValue(settings.trayMenuSize.width());
|
||||||
|
ui()->heightSpinBox->setValue(settings.trayMenuSize.height());
|
||||||
|
ui()->xPosSpinBox->setValue(settings.positioning.assumedIconPosition.x());
|
||||||
|
ui()->yPosSpinBox->setValue(settings.positioning.assumedIconPosition.y());
|
||||||
|
}
|
||||||
|
|
||||||
void AppearanceOptionPage::reset()
|
void AppearanceOptionPage::reset()
|
||||||
{
|
{
|
||||||
const auto &v = values();
|
const auto &v = values();
|
||||||
const auto &settings = v.appearance;
|
const auto &settings = v.appearance;
|
||||||
|
resetPositioningSettings();
|
||||||
ui()->windowTypeComboBox->setCurrentIndex(settings.windowType);
|
ui()->windowTypeComboBox->setCurrentIndex(settings.windowType);
|
||||||
ui()->widthSpinBox->setValue(settings.trayMenuSize.width());
|
|
||||||
ui()->heightSpinBox->setValue(settings.trayMenuSize.height());
|
|
||||||
ui()->showTrafficCheckBox->setChecked(settings.showTraffic);
|
ui()->showTrafficCheckBox->setChecked(settings.showTraffic);
|
||||||
ui()->showTabTextsCheckBox->setChecked(settings.showTabTexts);
|
ui()->showTabTextsCheckBox->setChecked(settings.showTabTexts);
|
||||||
ui()->preferIconsFromThemeCheckBox->setChecked(v.icons.preferIconsFromTheme);
|
ui()->preferIconsFromThemeCheckBox->setChecked(v.icons.preferIconsFromTheme);
|
||||||
|
@ -553,8 +562,6 @@ void AppearanceOptionPage::reset()
|
||||||
|
|
||||||
ui()->useCursorPosCheckBox->setChecked(settings.positioning.useCursorPosition);
|
ui()->useCursorPosCheckBox->setChecked(settings.positioning.useCursorPosition);
|
||||||
ui()->assumeIconPosCheckBox->setChecked(settings.positioning.useAssumedIconPosition);
|
ui()->assumeIconPosCheckBox->setChecked(settings.positioning.useAssumedIconPosition);
|
||||||
ui()->xPosSpinBox->setValue(settings.positioning.assumedIconPosition.x());
|
|
||||||
ui()->yPosSpinBox->setValue(settings.positioning.assumedIconPosition.y());
|
|
||||||
}
|
}
|
||||||
|
|
||||||
// IconsOptionPage
|
// IconsOptionPage
|
||||||
|
@ -1624,8 +1631,9 @@ SettingsDialog::SettingsDialog(Data::SyncthingConnection *connection, QWidget *p
|
||||||
|
|
||||||
category = new OptionCategory(this);
|
category = new OptionCategory(this);
|
||||||
translateCategory(category, [] { return tr("Tray"); });
|
translateCategory(category, [] { return tr("Tray"); });
|
||||||
category->assignPages({ m_connectionsOptionPage = new ConnectionOptionPage(connection), new NotificationsOptionPage, new AppearanceOptionPage,
|
category->assignPages({ m_connectionsOptionPage = new ConnectionOptionPage(connection), new NotificationsOptionPage,
|
||||||
new IconsOptionPage(IconsOptionPage::Context::UI), new IconsOptionPage(IconsOptionPage::Context::System) });
|
m_appearanceOptionPage = new AppearanceOptionPage, new IconsOptionPage(IconsOptionPage::Context::UI),
|
||||||
|
new IconsOptionPage(IconsOptionPage::Context::System) });
|
||||||
category->setIcon(QIcon(QStringLiteral(":/icons/hicolor/scalable/app/syncthingtray.svg")));
|
category->setIcon(QIcon(QStringLiteral(":/icons/hicolor/scalable/app/syncthingtray.svg")));
|
||||||
categories << category;
|
categories << category;
|
||||||
|
|
||||||
|
@ -1682,7 +1690,16 @@ void SettingsDialog::init()
|
||||||
|
|
||||||
void SettingsDialog::hideConnectionStatus()
|
void SettingsDialog::hideConnectionStatus()
|
||||||
{
|
{
|
||||||
m_connectionsOptionPage->hideConnectionStatus();
|
if (m_connectionsOptionPage) {
|
||||||
|
m_connectionsOptionPage->hideConnectionStatus();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
void SettingsDialog::resetPositioningSettings()
|
||||||
|
{
|
||||||
|
if (m_appearanceOptionPage && m_appearanceOptionPage->hasBeenShown()) {
|
||||||
|
m_appearanceOptionPage->resetPositioningSettings();
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void SettingsDialog::selectLauncherSettings()
|
void SettingsDialog::selectLauncherSettings()
|
||||||
|
|
|
@ -84,7 +84,10 @@ DECLARE_SETUP_WIDGETS
|
||||||
const GuiType m_guiType;
|
const GuiType m_guiType;
|
||||||
END_DECLARE_OPTION_PAGE
|
END_DECLARE_OPTION_PAGE
|
||||||
|
|
||||||
DECLARE_UI_FILE_BASED_OPTION_PAGE(AppearanceOptionPage)
|
BEGIN_DECLARE_UI_FILE_BASED_OPTION_PAGE(AppearanceOptionPage)
|
||||||
|
public:
|
||||||
|
void resetPositioningSettings();
|
||||||
|
END_DECLARE_OPTION_PAGE
|
||||||
|
|
||||||
BEGIN_DECLARE_UI_FILE_BASED_OPTION_PAGE_CUSTOM_CTOR(IconsOptionPage)
|
BEGIN_DECLARE_UI_FILE_BASED_OPTION_PAGE_CUSTOM_CTOR(IconsOptionPage)
|
||||||
public:
|
public:
|
||||||
|
@ -197,10 +200,14 @@ public:
|
||||||
Q_SIGNALS:
|
Q_SIGNALS:
|
||||||
void wizardRequested();
|
void wizardRequested();
|
||||||
|
|
||||||
|
public Q_SLOTS:
|
||||||
|
void resetPositioningSettings();
|
||||||
|
|
||||||
private:
|
private:
|
||||||
void init();
|
void init();
|
||||||
|
|
||||||
ConnectionOptionPage *m_connectionsOptionPage;
|
ConnectionOptionPage *m_connectionsOptionPage = nullptr;
|
||||||
|
AppearanceOptionPage *m_appearanceOptionPage = nullptr;
|
||||||
int m_launcherSettingsCategory = -1, m_launcherSettingsPageIndex = -1;
|
int m_launcherSettingsCategory = -1, m_launcherSettingsPageIndex = -1;
|
||||||
};
|
};
|
||||||
} // namespace QtGui
|
} // namespace QtGui
|
||||||
|
|
|
@ -156,6 +156,21 @@ void TrayMenu::mouseReleaseEvent(QMouseEvent *event)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void TrayMenu::moveEvent(QMoveEvent *event)
|
||||||
|
{
|
||||||
|
auto &settings = Settings::values().appearance.positioning;
|
||||||
|
if (settings.useAssumedIconPosition) {
|
||||||
|
Settings::values().appearance.positioning.assumedIconPosition = event->pos();
|
||||||
|
emit positioningSettingsChanged();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
void TrayMenu::resizeEvent(QResizeEvent *event)
|
||||||
|
{
|
||||||
|
Settings::values().appearance.trayMenuSize = event->size();
|
||||||
|
emit positioningSettingsChanged();
|
||||||
|
}
|
||||||
|
|
||||||
void TrayMenu::paintEvent(QPaintEvent *event)
|
void TrayMenu::paintEvent(QPaintEvent *event)
|
||||||
{
|
{
|
||||||
if (m_windowType == WindowType::Popup) {
|
if (m_windowType == WindowType::Popup) {
|
||||||
|
|
|
@ -28,12 +28,17 @@ public:
|
||||||
void setWindowType(int windowType);
|
void setWindowType(int windowType);
|
||||||
void setWindowType(WindowType windowType);
|
void setWindowType(WindowType windowType);
|
||||||
|
|
||||||
|
Q_SIGNALS:
|
||||||
|
void positioningSettingsChanged();
|
||||||
|
|
||||||
public Q_SLOTS:
|
public Q_SLOTS:
|
||||||
void showUsingPositioningSettings();
|
void showUsingPositioningSettings();
|
||||||
|
|
||||||
protected:
|
protected:
|
||||||
void mouseReleaseEvent(QMouseEvent *) override;
|
void mouseReleaseEvent(QMouseEvent *) override;
|
||||||
void mousePressEvent(QMouseEvent *) override;
|
void mousePressEvent(QMouseEvent *) override;
|
||||||
|
void moveEvent(QMoveEvent *) override;
|
||||||
|
void resizeEvent(QResizeEvent *) override;
|
||||||
void paintEvent(QPaintEvent *) override;
|
void paintEvent(QPaintEvent *) override;
|
||||||
void focusOutEvent(QFocusEvent *) override;
|
void focusOutEvent(QFocusEvent *) override;
|
||||||
|
|
||||||
|
|
|
@ -247,6 +247,9 @@ SettingsDialog *TrayWidget::settingsDialog()
|
||||||
s_settingsDlg = new SettingsDialog(s_instances.size() < 2 ? &m_connection : nullptr);
|
s_settingsDlg = new SettingsDialog(s_instances.size() < 2 ? &m_connection : nullptr);
|
||||||
connect(s_settingsDlg, &SettingsDialog::wizardRequested, this, &TrayWidget::showWizard);
|
connect(s_settingsDlg, &SettingsDialog::wizardRequested, this, &TrayWidget::showWizard);
|
||||||
connect(s_settingsDlg, &SettingsDialog::applied, &TrayWidget::applySettingsOnAllInstances);
|
connect(s_settingsDlg, &SettingsDialog::applied, &TrayWidget::applySettingsOnAllInstances);
|
||||||
|
if (m_menu) {
|
||||||
|
connect(m_menu, &TrayMenu::positioningSettingsChanged, s_settingsDlg, &SettingsDialog::resetPositioningSettings);
|
||||||
|
}
|
||||||
|
|
||||||
// save settings to disk when applied
|
// save settings to disk when applied
|
||||||
// note: QCoreApplication::aboutToQuit() does not work reliably but terminating only at the
|
// note: QCoreApplication::aboutToQuit() does not work reliably but terminating only at the
|
||||||
|
|
Loading…
Reference in New Issue