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;
|
||||
}
|
||||
|
||||
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()
|
||||
{
|
||||
const auto &v = values();
|
||||
const auto &settings = v.appearance;
|
||||
resetPositioningSettings();
|
||||
ui()->windowTypeComboBox->setCurrentIndex(settings.windowType);
|
||||
ui()->widthSpinBox->setValue(settings.trayMenuSize.width());
|
||||
ui()->heightSpinBox->setValue(settings.trayMenuSize.height());
|
||||
ui()->showTrafficCheckBox->setChecked(settings.showTraffic);
|
||||
ui()->showTabTextsCheckBox->setChecked(settings.showTabTexts);
|
||||
ui()->preferIconsFromThemeCheckBox->setChecked(v.icons.preferIconsFromTheme);
|
||||
|
@ -553,8 +562,6 @@ void AppearanceOptionPage::reset()
|
|||
|
||||
ui()->useCursorPosCheckBox->setChecked(settings.positioning.useCursorPosition);
|
||||
ui()->assumeIconPosCheckBox->setChecked(settings.positioning.useAssumedIconPosition);
|
||||
ui()->xPosSpinBox->setValue(settings.positioning.assumedIconPosition.x());
|
||||
ui()->yPosSpinBox->setValue(settings.positioning.assumedIconPosition.y());
|
||||
}
|
||||
|
||||
// IconsOptionPage
|
||||
|
@ -1624,8 +1631,9 @@ SettingsDialog::SettingsDialog(Data::SyncthingConnection *connection, QWidget *p
|
|||
|
||||
category = new OptionCategory(this);
|
||||
translateCategory(category, [] { return tr("Tray"); });
|
||||
category->assignPages({ m_connectionsOptionPage = new ConnectionOptionPage(connection), new NotificationsOptionPage, new AppearanceOptionPage,
|
||||
new IconsOptionPage(IconsOptionPage::Context::UI), new IconsOptionPage(IconsOptionPage::Context::System) });
|
||||
category->assignPages({ m_connectionsOptionPage = new ConnectionOptionPage(connection), new NotificationsOptionPage,
|
||||
m_appearanceOptionPage = new AppearanceOptionPage, new IconsOptionPage(IconsOptionPage::Context::UI),
|
||||
new IconsOptionPage(IconsOptionPage::Context::System) });
|
||||
category->setIcon(QIcon(QStringLiteral(":/icons/hicolor/scalable/app/syncthingtray.svg")));
|
||||
categories << category;
|
||||
|
||||
|
@ -1682,7 +1690,16 @@ void SettingsDialog::init()
|
|||
|
||||
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()
|
||||
|
|
|
@ -84,7 +84,10 @@ DECLARE_SETUP_WIDGETS
|
|||
const GuiType m_guiType;
|
||||
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)
|
||||
public:
|
||||
|
@ -197,10 +200,14 @@ public:
|
|||
Q_SIGNALS:
|
||||
void wizardRequested();
|
||||
|
||||
public Q_SLOTS:
|
||||
void resetPositioningSettings();
|
||||
|
||||
private:
|
||||
void init();
|
||||
|
||||
ConnectionOptionPage *m_connectionsOptionPage;
|
||||
ConnectionOptionPage *m_connectionsOptionPage = nullptr;
|
||||
AppearanceOptionPage *m_appearanceOptionPage = nullptr;
|
||||
int m_launcherSettingsCategory = -1, m_launcherSettingsPageIndex = -1;
|
||||
};
|
||||
} // 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)
|
||||
{
|
||||
if (m_windowType == WindowType::Popup) {
|
||||
|
|
|
@ -28,12 +28,17 @@ public:
|
|||
void setWindowType(int windowType);
|
||||
void setWindowType(WindowType windowType);
|
||||
|
||||
Q_SIGNALS:
|
||||
void positioningSettingsChanged();
|
||||
|
||||
public Q_SLOTS:
|
||||
void showUsingPositioningSettings();
|
||||
|
||||
protected:
|
||||
void mouseReleaseEvent(QMouseEvent *) override;
|
||||
void mousePressEvent(QMouseEvent *) override;
|
||||
void moveEvent(QMoveEvent *) override;
|
||||
void resizeEvent(QResizeEvent *) override;
|
||||
void paintEvent(QPaintEvent *) override;
|
||||
void focusOutEvent(QFocusEvent *) override;
|
||||
|
||||
|
|
|
@ -247,6 +247,9 @@ SettingsDialog *TrayWidget::settingsDialog()
|
|||
s_settingsDlg = new SettingsDialog(s_instances.size() < 2 ? &m_connection : nullptr);
|
||||
connect(s_settingsDlg, &SettingsDialog::wizardRequested, this, &TrayWidget::showWizard);
|
||||
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
|
||||
// note: QCoreApplication::aboutToQuit() does not work reliably but terminating only at the
|
||||
|
|
Loading…
Reference in New Issue