PICARD-2063: Make automatic horizontal scrolling in file browser configurable

This commit is contained in:
Philipp Wolfer
2020-12-14 08:41:27 +01:00
parent 433535179d
commit 2fe7aa9c75
4 changed files with 25 additions and 8 deletions

View File

@@ -128,15 +128,18 @@ class FileBrowser(QtWidgets.QTreeView):
def scrollTo(self, index, scrolltype=QtWidgets.QAbstractItemView.EnsureVisible):
# QTreeView.scrollTo resets the horizontal scroll position to 0.
# Reimplemented to instead scroll to horizontal parent position.
level = -1
# Reimplemented to instead scroll to horizontal parent position or keep previous position.
if index and config.setting['filebrowser_horizontal_autoscroll']:
level = -1
parent = index.parent()
root = self.rootIndex()
while parent.isValid() and parent != root:
parent = parent.parent()
level += 1
pos_x = max(self.indentation() * level, 0)
else:
pos_x = self.horizontalScrollBar().value()
super().scrollTo(index, scrolltype)
parent = self.currentIndex().parent()
root = self.rootIndex()
while parent.isValid() and parent != root:
parent = parent.parent()
level += 1
pos_x = max(self.indentation() * level, 0)
self.horizontalScrollBar().setValue(pos_x)
def mousePressEvent(self, event):

View File

@@ -136,6 +136,7 @@ class InterfaceOptionsPage(OptionsPage):
config.BoolOption("setting", "quit_confirmation", True),
config.TextOption("setting", "ui_language", ""),
config.BoolOption("setting", "use_system_theme", False),
config.BoolOption("setting", "filebrowser_horizontal_autoscroll", True),
config.BoolOption("setting", "starting_directory", False),
config.TextOption("setting", "starting_directory_path", _default_starting_dir),
config.TextOption("setting", "load_image_behavior", "append"),
@@ -205,6 +206,7 @@ class InterfaceOptionsPage(OptionsPage):
self.ui.use_system_theme.setChecked(config.setting["use_system_theme"])
current_ui_language = config.setting["ui_language"]
self.ui.ui_language.setCurrentIndex(self.ui.ui_language.findData(current_ui_language))
self.ui.filebrowser_horizontal_autoscroll.setChecked(config.setting["filebrowser_horizontal_autoscroll"])
self.ui.starting_directory.setChecked(config.setting["starting_directory"])
self.ui.starting_directory_path.setText(config.setting["starting_directory_path"])
self.populate_action_list()
@@ -242,6 +244,7 @@ class InterfaceOptionsPage(OptionsPage):
dialog.exec_()
config.setting["use_system_theme"] = self.ui.use_system_theme.isChecked()
config.setting["ui_language"] = self.ui.ui_language.itemData(self.ui.ui_language.currentIndex())
config.setting["filebrowser_horizontal_autoscroll"] = self.ui.filebrowser_horizontal_autoscroll.isChecked()
config.setting["starting_directory"] = self.ui.starting_directory.isChecked()
config.setting["starting_directory_path"] = os.path.normpath(self.ui.starting_directory_path.text())
self.update_layout_config()

View File

@@ -35,6 +35,9 @@ class Ui_InterfaceOptionsPage(object):
self.quit_confirmation = QtWidgets.QCheckBox(self.groupBox_2)
self.quit_confirmation.setObjectName("quit_confirmation")
self.vboxlayout1.addWidget(self.quit_confirmation)
self.filebrowser_horizontal_autoscroll = QtWidgets.QCheckBox(self.groupBox_2)
self.filebrowser_horizontal_autoscroll.setObjectName("filebrowser_horizontal_autoscroll")
self.vboxlayout1.addWidget(self.filebrowser_horizontal_autoscroll)
self.starting_directory = QtWidgets.QCheckBox(self.groupBox_2)
self.starting_directory.setObjectName("starting_directory")
self.vboxlayout1.addWidget(self.starting_directory)
@@ -134,6 +137,7 @@ class Ui_InterfaceOptionsPage(object):
self.builtin_search.setText(_("Use builtin search rather than looking in browser"))
self.use_adv_search_syntax.setText(_("Use advanced query syntax"))
self.quit_confirmation.setText(_("Show a quit confirmation dialog for unsaved changes"))
self.filebrowser_horizontal_autoscroll.setText(_("Adjust horizontal position in file browser automatically"))
self.starting_directory.setText(_("Begin browsing in the following directory:"))
self.starting_directory_browse.setText(_("Browse..."))
self.label.setText(_("User interface language:"))

View File

@@ -59,6 +59,13 @@
</property>
</widget>
</item>
<item>
<widget class="QCheckBox" name="filebrowser_horizontal_autoscroll">
<property name="text">
<string>Adjust horizontal position in file browser automatically</string>
</property>
</widget>
</item>
<item>
<widget class="QCheckBox" name="starting_directory">
<property name="text">