diff --git a/main.go b/main.go index 30a4ae5..6c20d20 100644 --- a/main.go +++ b/main.go @@ -303,7 +303,6 @@ func (f *TMainForm) OnMnuFileBadgerOpenClick(sender vcl.IObject) { func (f *TMainForm) OnMnuFileBadgerMemoryClick(sender vcl.IObject) { f.badgerAddDatabaseFromMemory() - } func (f *TMainForm) OnMnuFilePebbleOpenClick(sender vcl.IObject) { @@ -386,17 +385,18 @@ func (f *TMainForm) OnNavContextPopup(sender vcl.IObject, mousePos types.TPoint, return } + ndata := (*navData)(curItem.Data()) + mnu := vcl.NewPopupMenu(f.Buckets) mnu.SetImages(f.ImageList) mnuRefresh := vcl.NewMenuItem(mnu) mnuRefresh.SetCaption("Refresh") mnuRefresh.SetImageIndex(imgArrowRefresh) - mnuRefresh.SetOnClick(f.OnNavContextRefresh) + mnuRefresh.SetOnClick(func(sender vcl.IObject) { f.OnNavContextRefresh(curItem, ndata) }) mnu.Items().Add(mnuRefresh) // Check what custom actions the ndata->db itself wants to add - ndata := (*navData)(curItem.Data()) actions, err := ndata.ld.NavContext(ndata) if err != nil { vcl.ShowMessage(err.Error()) @@ -434,9 +434,20 @@ func (f *TMainForm) OnNavContextPopup(sender vcl.IObject, mousePos types.TPoint, mnu.Popup2() } -func (f *TMainForm) OnNavContextRefresh(sender vcl.IObject) { - vcl.ShowMessage("TODO") - // TODO +func (f *TMainForm) OnNavContextRefresh(item *vcl.TTreeNode, ndata *navData) { + isExpanded := item.Expanded() + + // Reset nav node to 'unloaded' state + item.Collapse(true) + item.DeleteChildren() + item.SetHasChildren(true) + ndata.childrenLoaded = false + + // Trigger a virtual reload + item.Expand(false) // Calls OnNavExpanding to dynamically detect children + + // Restore previous gui state + item.SetExpanded(isExpanded) } func (f *TMainForm) OnNavContextClose(sender vcl.IObject) {