summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src/modlistview.cpp2
-rw-r--r--src/settings.cpp10
-rw-r--r--src/settings.h6
-rw-r--r--src/settingsdialog.ui39
-rw-r--r--src/settingsdialoguserinterface.cpp2
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) {