diff --git a/NEWS.txt b/NEWS.txt index ec269273d..32e875c2a 100644 --- a/NEWS.txt +++ b/NEWS.txt @@ -22,6 +22,7 @@ Version 1.0 - 2012-06-XX * Update artist translation to use new alias features (primary flag, sort names) (PICARD-200) * Deleted tags aren't indicated as changes (PICARD-165) * Picard log entries have inaccurate timestamp (PICARD-45) + * Interface doesn't allow keyboard only management (PICARD-103) Version 0.16 - 2011-10-23 * Added AcoustID support. diff --git a/picard/ui/itemviews.py b/picard/ui/itemviews.py index cff1f5999..085fb4a37 100644 --- a/picard/ui/itemviews.py +++ b/picard/ui/itemviews.py @@ -176,6 +176,9 @@ class MainPanel(QtGui.QSplitter): self.update_selection(1, 0) self._ignore_selection_changes = False + def update_current_view(self): + self.update_selection(self._selected_view, abs(self._selected_view - 1)) + class BaseTreeView(QtGui.QTreeWidget): @@ -498,6 +501,19 @@ class BaseTreeView(QtGui.QTreeWidget): else: cluster_item.add_files(cluster.files) + def currentChanged(self, current, previous): + QtGui.QTreeWidget.currentChanged(self, current, previous) + item = self.itemFromIndex(current) + if item and not item.isSelected(): + self.setCurrentItem(item) + + def moveCursor(self, action, modifiers): + if action in (QtGui.QAbstractItemView.MoveUp, QtGui.QAbstractItemView.MoveDown): + item = self.currentItem() + if item and not item.isSelected(): + self.setCurrentItem(item) + return QtGui.QTreeWidget.moveCursor(self, action, modifiers) + class FileTreeView(BaseTreeView): diff --git a/picard/ui/mainwindow.py b/picard/ui/mainwindow.py index 3ddfb284b..bfc408e6d 100644 --- a/picard/ui/mainwindow.py +++ b/picard/ui/mainwindow.py @@ -652,7 +652,10 @@ been merged with that of single artist albums."""), def remove(self): """Tell the tagger to remove the selected objects.""" + self.panel._ignore_selection_changes = True self.tagger.remove(self.selected_objects) + self.panel._ignore_selection_changes = False + self.panel.update_current_view() def analyze(self): if not self.config.setting['enable_fingerprinting']: diff --git a/picard/ui/metadatabox.py b/picard/ui/metadatabox.py index b414b8420..1c53fdd9a 100644 --- a/picard/ui/metadatabox.py +++ b/picard/ui/metadatabox.py @@ -93,7 +93,9 @@ class MetadataBox(QtGui.QTableWidget): self.verticalHeader().setDefaultSectionSize(21) self.verticalHeader().setVisible(False) self.setSelectionMode(QtGui.QAbstractItemView.SingleSelection) + self.setTabKeyNavigation(False) self.setStyleSheet("QTableWidget {border: none;}") + self.setAttribute(QtCore.Qt.WA_MacShowFocusRect, 1) self.itemChanged.connect(self.item_changed) self.colors = { "default": self.palette().color(QtGui.QPalette.Text), @@ -331,7 +333,7 @@ class MetadataBox(QtGui.QTableWidget): new_item = self.item(i, 2) if not tag_item: tag_item = QtGui.QTableWidgetItem() - tag_item.setFlags(QtCore.Qt.ItemIsEnabled) + tag_item.setFlags(flags) font = tag_item.font() font.setBold(True) tag_item.setFont(font)