親を子にドロップしたらダメですよw

さて、次は何をやろうか・・・。と思っていたところに重大なバグ発見。

* 自分の子供にドラッグするとノードが消える。

そうですね。仕様からして親を子供にドロップするのは違反ですね。例のごとく定石があるのかどうか知らないまま自前で処理を書いてみます。

TreeStore

def isParentItem(self, parent, child):                    
    item = self.iter_parent(child)                        
    while item!=self.getHiddenRoot():                     
        if item == parent:                                
            return True
        else:                                             
            item = self.iter_parent(item)
    return False                                          

TreeCtrl

def onTreeEndDrag(self, event):                                              
    print "treeEndDrag"                                                      
    src_item = self.dragItem                                                 
    target_item = event.GetItem()                                            
    if target_item == None:                                                  
        print "item=None"                                                    
    elif self.get_model().isParentItem(src_item, target_item):               
        print "Parent item cannot drop to child."                            
    else:                                                                    
        item, flag = self.HitTest(event.GetPoint())                          
        print "flag == %s" % flag                                            
        status = self.__dropPointStatus(flag)                                
        if status==0:                                                        
            self.get_model().moveNodeBefore(src_item, target_item)           
        elif status==1:                                                      
            self.get_model().moveNodeAfter(src_item, target_item)            
        elif status==2:                                                      
            self.get_model().moveNodeToChild(src_item, target_item)          
        self.Expand(target_item)                                             

こんな感じで親子判定を行うようにしたらうまくいきました。
Rev.43でコミット。