如何找到GtkTreeView
中光标所在的行或单元格?
我试过了:
screen, _ := tv.Widget.GetScreen()
display, _ := screen.GetDisplay()
seat, _ := display.GetDefaultSeat()
device, _ := seat.GetPointer()
window, _ := tv.GetWindow()
_, x, y, _ := window.GetDevicePosition(device)
tx, ty := -1, -1
tv.ConvertBinWindowToTreeCoords(x, y, &tx, &ty)
_, _, row, _, rowExists := tv.GetPathAtPos(tx, ty)
ConvertBinWindowToTreeCoords
将设备位置(这似乎是合理的(转换为巨大的负数(!?(。所有这些位置/坐标周围的文档都非常模糊,不知道它们到底使用了哪个坐标(例如,它是如何与ScrollWindows交互的(。即使是Coords
、Pos
和Position
之间的命名法在我看来也相当虚假
有人知道这是怎么回事吗?
原来要简单得多。
motion := gdk.EventMotionNewFromEvent(event)
x, y := motion.MotionVal()
path, _, _, _, rowExists := tv.GetPathAtPos(int(x), int(y))
if !rowExists {
return true
}
return true
使用row
是我的误解,因为它实际上意味着缩进级别。因此,实际索引被保存在path
中。