Pergunta

Eu estou tentando pegar um evento duplo clique na área vazia de um TreeView para criar um novo nó. Infelizmente forma padrão não funciona. Eu tentei ligar ButtonPressEvent tanto TreeView eo ScrolledWindow em que T.V. está hospedado. Eu não entendo quaisquer chamadas de retorno à minha função.

Como posso resolver isso?

Foi útil?

Solução

Você vai precisar usar o GLib.ConnectBeforeAttribute em seu manipulador de lidar com TreeView.ButtonPressEvent, caso contrário, o widget irá manipular o evento internamente e seu manipulador não será chamado.

exemplo:

[GLib.ConnectBefore]
void OnTreeViewButtonPressEvent(object sender, ButtonPressEventArgs e)
{
    if (e.Type == Gdk.EventType.TwoButtonPress)
    {
        // double click
    }
}    

Outras dicas

http://old.nabble.com/CellRenderer- editável-on-duplo-clique-td24975510.html

self.treeview.connect("button-press-event",self.cell_clicked)

def cell_clicked(self, widget, event):
     if event.button == 1 and event.type == gtk.gdk.BUTTON_PRESS:
        print "Double clicked on cell"

Eu acho que o TreeView tem uma janela própria.

Obter o identificador de janela, e em seguida, SendMessage (Treeview-> GetSafeHwnd (), tvi_root, tvichildren)

A enviar mensagem acima é para o seu entendimento só.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top