diff options
| author | Mikaël Capelle <capelle.mikael@gmail.com> | 2021-01-17 13:09:10 +0100 |
|---|---|---|
| committer | Mikaël Capelle <capelle.mikael@gmail.com> | 2021-01-17 13:09:10 +0100 |
| commit | 2b08f3f72c3b54e50fc926ffbaf4fbca096f51be (patch) | |
| tree | 5490ecb4d974a31cd99230d41ae8f0d9ca32a669 | |
| parent | 704490e3157dbb9916fc3fb42b5503462a482f06 (diff) | |
Add option to enable auto-collapse on hover after delay.
| -rw-r--r-- | src/modlistview.cpp | 2 | ||||
| -rw-r--r-- | src/settings.cpp | 10 | ||||
| -rw-r--r-- | src/settings.h | 6 | ||||
| -rw-r--r-- | src/settingsdialog.ui | 39 | ||||
| -rw-r--r-- | src/settingsdialoguserinterface.cpp | 2 |
5 files changed, 45 insertions, 14 deletions
diff --git a/src/modlistview.cpp b/src/modlistview.cpp index 9b461b8f..763e852a 100644 --- a/src/modlistview.cpp +++ b/src/modlistview.cpp @@ -1377,7 +1377,7 @@ void ModListView::timerEvent(QTimerEvent* event) if (state() == QAbstractItemView::DraggingState
&& viewport()->rect().contains(pos)) {
QModelIndex index = indexAt(pos);
- setExpanded(index, true);
+ setExpanded(index, !m_core->settings().interface().autoCollapseOnHover() || !isExpanded(index));
}
m_openTimer.stop();
}
diff --git a/src/settings.cpp b/src/settings.cpp index 27c02ede..142d3f39 100644 --- a/src/settings.cpp +++ b/src/settings.cpp @@ -2238,6 +2238,16 @@ void InterfaceSettings::setSaveFilters(bool b) set(m_Settings, "Settings", "save_filters", b); } +bool InterfaceSettings::autoCollapseOnHover() const +{ + return get<bool>(m_Settings, "Settings", "auto_collapse_on_hover", false); +} + +void InterfaceSettings::setAutoCollapseOnHover(bool b) +{ + set(m_Settings, "Settings", "auto_collapse_on_hover", b); +} + bool InterfaceSettings::checkUpdateAfterInstallation() const { return get<bool>(m_Settings, "Settings", "autocheck_update_install", true); diff --git a/src/settings.h b/src/settings.h index 35c9ca4d..96290f55 100644 --- a/src/settings.h +++ b/src/settings.h @@ -653,6 +653,12 @@ public: bool saveFilters() const; void setSaveFilters(bool b); + // whether to collapse groups (separators, categories, ...) after + // a delay when hovering (similar to auto-expand) + // + bool autoCollapseOnHover() const; + void setAutoCollapseOnHover(bool b); + // whether to check for update after installing a mod // bool checkUpdateAfterInstallation() const; diff --git a/src/settingsdialog.ui b/src/settingsdialog.ui index e65e28ff..9aa92e53 100644 --- a/src/settingsdialog.ui +++ b/src/settingsdialog.ui @@ -298,6 +298,19 @@ If you disable this feature, MO will only display official DLCs this way. Please </widget> </item> <item> + <widget class="QCheckBox" name="autoCollapseDelayBox"> + <property name="toolTip"> + <string>Automatically collapse separators, categories or nexus ids after a delay when hovering them during drag.</string> + </property> + <property name="whatsThis"> + <string>Automatically collapse separators, categories or nexus ids after a delay when hovering them during drag.</string> + </property> + <property name="text"> + <string>Automatically collapse items during drag on hover</string> + </property> + </widget> + </item> + <item> <spacer name="verticalSpacer_9"> <property name="orientation"> <enum>Qt::Vertical</enum> @@ -368,19 +381,6 @@ If you disable this feature, MO will only display official DLCs this way. Please </property> </widget> </item> - <item row="1" column="0" colspan="3"> - <widget class="QCheckBox" name="collapsibleSeparatorsPerProfileBox"> - <property name="toolTip"> - <string>Do not share the collapse/expanded state of separators between profiles.</string> - </property> - <property name="whatsThis"> - <string>Do not share the collapse/expanded state of separators between profiles.</string> - </property> - <property name="text"> - <string>Profile-specific collapse states for separators</string> - </property> - </widget> - </item> <item row="3" column="2"> <widget class="QCheckBox" name="collapsibleSeparatorsIconsFlagsBox"> <property name="text"> @@ -477,6 +477,19 @@ If you disable this feature, MO will only display official DLCs this way. Please </property> </widget> </item> + <item row="1" column="0" colspan="5"> + <widget class="QCheckBox" name="collapsibleSeparatorsPerProfileBox"> + <property name="toolTip"> + <string>Do not share the collapse/expanded state of separators between profiles.</string> + </property> + <property name="whatsThis"> + <string>Do not share the collapse/expanded state of separators between profiles.</string> + </property> + <property name="text"> + <string>Profile-specific collapse states for separators</string> + </property> + </widget> + </item> </layout> </item> </layout> diff --git a/src/settingsdialoguserinterface.cpp b/src/settingsdialoguserinterface.cpp index bb0628a8..503e0feb 100644 --- a/src/settingsdialoguserinterface.cpp +++ b/src/settingsdialoguserinterface.cpp @@ -32,6 +32,7 @@ UserInterfaceSettingsTab::UserInterfaceSettingsTab(Settings& s, SettingsDialog& ui->collapsibleSeparatorsHighlightToBox->setChecked(settings().interface().collapsibleSeparatorsHighlightTo()); ui->collapsibleSeparatorsPerProfileBox->setChecked(settings().interface().collapsibleSeparatorsPerProfile()); ui->saveFiltersBox->setChecked(settings().interface().saveFilters()); + ui->autoCollapseDelayBox->setChecked(settings().interface().autoCollapseOnHover()); ui->checkUpdateInstallBox->setChecked(settings().interface().checkUpdateAfterInstallation()); for (auto& p : m_columnToBox) { @@ -61,6 +62,7 @@ void UserInterfaceSettingsTab::update() settings().interface().setCollapsibleSeparatorsHighlightTo(ui->collapsibleSeparatorsHighlightToBox->isChecked()); settings().interface().setCollapsibleSeparatorsPerProfile(ui->collapsibleSeparatorsPerProfileBox->isChecked()); settings().interface().setSaveFilters(ui->saveFiltersBox->isChecked()); + settings().interface().setAutoCollapseOnHover(ui->autoCollapseDelayBox->isChecked()); settings().interface().setCheckUpdateAfterInstallation(ui->checkUpdateInstallBox->isChecked()); for (auto& p : m_columnToBox) { |
