Выберите строку TreeView после перетаскивания без перемещения вида - PullRequest
0 голосов
/ 30 мая 2019

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

Я могу отслеживать перемещенный элемент, захватывая его при сигнале drag_begin:

def on_theTreeView_drag_begin(self, treeview, drag_context):
    treeselection = treeview.get_selection()
    model, iter = treeselection.get_selected()
    myGlobalWindow.letterDragged = model.get_value(iter, 0)

Затем, когда активируется drag_end,Я могу найти перемещенный элемент и выбрать его:

def on_theTreeView_drag_end(self, treeview, context):
    # do stuff

    # find letter and select that row in the new teaching order
    for row in myGlobalWindow.theListStore:
        if row[0] == myGlobalWindow.letterDragged:
            treeview.set_cursor(row.path)
            break

Это работает нормально, но всегда будет перемещать выбранную строку в верхнюю часть TreeView.Это дезориентирует пользователя - он перетаскивает его в определенное место, но если это внезапно переходит на верхушку TreeView, это сбивает с толку.Если я закомментирую вызов set_cursor, перетаскивание работает нормально, и представление в TreeView вообще не смещается (не перемещается), но TreeView заканчивается без выбранной строки.

Итаквопрос заключается в следующем: можно ли выбрать строку TreeView после операции перетаскивания таким образом, чтобы сохранить положение TreeView на экране?

...