I think the key problem is to differentiate the position we right-click on the GraphWidget area. Now the case is wherever i right-click, the button_press_event cancel the selected node. It cannot check if we right-click on the selected node or I move away and right-click on the other places. Usually people want to have some operations on the selected node with a right-click menu, otherwise unselect it. :) I tried to handle this within the branch of event.button == 3, check the pos of the self.picked and my current self.pointer value. But it doesn't work. In principle, if pos of self.picked is somehow the same as self.pointer: then it means "right-click on selected node" else: it means "right-click on other area, and I want to unselect the node" -- View this message in context: http://main-discussion-list-for-the-graph-tool-project.982480.n3.nabble.com/... Sent from the Main discussion list for the graph-tool project mailing list archive at Nabble.com.