diff --git a/openpype/tools/utils/assets_widget.py b/openpype/tools/utils/assets_widget.py index 70279e572f..fbff6fd4dd 100644 --- a/openpype/tools/utils/assets_widget.py +++ b/openpype/tools/utils/assets_widget.py @@ -8,6 +8,7 @@ from avalon import style from avalon.vendor import qtawesome from openpype.style import get_objected_colors +from openpype.tools.flickcharm import FlickCharm from .views import ( TreeViewSpinner, @@ -38,6 +39,26 @@ class AssetsView(TreeViewSpinner, DeselectableTreeView): self.setContextMenuPolicy(QtCore.Qt.CustomContextMenu) self.setHeaderHidden(True) + self._flick_charm_activated = False + self._flick_charm = FlickCharm(parent=self) + self._before_flick_scroll_mode = None + + def activate_flick_charm(self): + if self._flick_charm_activated: + return + self._flick_charm_activated = True + self._before_flick_scroll_mode = self.verticalScrollMode() + self._flick_charm.activateOn(self) + self.setVerticalScrollMode(self.ScrollPerPixel) + + def deactivate_flick_charm(self): + if not self._flick_charm_activated: + return + self._flick_charm_activated = False + self._flick_charm.deactivateFrom(self) + if self._before_flick_scroll_mode is not None: + self.setVerticalScrollMode(self._before_flick_scroll_mode) + def mousePressEvent(self, event): index = self.indexAt(event.pos()) if not index.isValid(): @@ -565,6 +586,12 @@ class AssetsWidget(QtWidgets.QWidget): new_index = self._proxy.mapFromSource(index) self._select_indexes([new_index]) + def activate_flick_charm(self): + self._view.activate_flick_charm() + + def deactivate_flick_charm(self): + self._view.deactivate_flick_charm() + def _on_selection_change(self): self.selection_changed.emit()