Изменить выбранные элементы при начале перетаскивания в NSOutlineView на Mac - PullRequest
0 голосов
/ 02 мая 2020

У меня есть представление на основе NSOutlineView (написано в Objective C), которое поддерживает перетаскивание из любой строки в дереве. Выбор нескольких строк пользователем не допускается. Я настраиваю то, что отбрасывается в методе делегирования outlineView: acceptDrop: item: childIndex , чтобы автоматически включать все необходимые родительские и дочерние строки. Фактическая операция перетаскивания работает отлично.

Моя проблема связана с визуальным компонентом того, что перетаскивается. Я могу использовать outlineView: selectionIndexesForProposedSelection , чтобы изменить выбор, когда выбор сделан. (Мой стиль визуального выбора - NSTableViewSelectionHighlightStyleNone ). Это также работает, поскольку необходимые компоненты визуально представлены в перетаскивании.

Проблема в том, что пользователю не нужно выбирать строку, чтобы начать перетаскивание. Когда перетаскивание начинается таким образом, outlineView: selectionIndexesForProposedSelection не вызывается, и только перетаскиваемая строка отображается во время перетаскивания. Фактическая операция перетаскивания все еще работает как задумано.

Я играл со всеми источниками данных и методами делегатов, но я не могу найти способ изменить то, что первоначально перетаскивалось так, чтобы NSOutlineView показывал изображения для включенные строки определение того, что нужно выделить во время перетаскивания, производится на основе выбора. Независимо от того, сколько элементов я помещаю на монтажный картон, всегда выделяются выделенные элементы.

Есть идеи, как заставить изменение выбора в начале перетаскивания?

1 Ответ

0 голосов
/ 02 мая 2020

Оказывается, что просто создав подкласс NSOutlineView и используя mouseDown , я в безопасности, прежде чем что-либо еще начнется. Настройка выделения работает нормально как возможная последующая и, похоже, не вносит изменений в возможное изменение выбора при одном и том же нажатии.

...