diff --git a/source/childwin.dfm b/source/childwin.dfm index c5344178..2f0de93c 100644 --- a/source/childwin.dfm +++ b/source/childwin.dfm @@ -57,7 +57,6 @@ object MDIChild: TMDIChild HotTrack = True Images = MainForm.ImageList1 Indent = 19 - PopupMenu = popupTreeView ReadOnly = True RightClickSelect = True RowSelect = True @@ -65,6 +64,7 @@ object MDIChild: TMDIChild TabOrder = 0 OnChange = DBtreeChange OnChanging = DBtreeChanging + OnContextPopup = DBtreeContextPopup OnExpanding = DBtreeExpanding end object TableShow: TPanel diff --git a/source/childwin.pas b/source/childwin.pas index b6a2760e..88299d19 100644 --- a/source/childwin.pas +++ b/source/childwin.pas @@ -308,6 +308,8 @@ type N25: TMenuItem; menuLogToFile: TMenuItem; menuOpenLogFolder: TMenuItem; + procedure DBtreeContextPopup(Sender: TObject; MousePos: TPoint; + var Handled: Boolean); procedure DBtreeChanging(Sender: TObject; Node: TTreeNode; var AllowChange: Boolean); procedure menuRenameColumnClick(Sender: TObject); @@ -1494,6 +1496,15 @@ begin end; +procedure TMDIChild.DBtreeContextPopup(Sender: TObject; MousePos: TPoint; + var Handled: Boolean); +begin + debug('context menu; storing right click item so it won''t get lost'); + DBRightClickSelectedItem := DBtree.Selected; + popupTreeView.Popup(MousePos.X, MousePos.Y); + PostMessage(MainForm.Handle, WM_CLEAR_RIGHTCLICK_POINTER, 0, 0); +end; + {*** A database-node is about to be expanded: Drop the dummy-node and add all tables @@ -4513,7 +4524,6 @@ end; procedure TMDIChild.popupTreeViewPopup(Sender: TObject); begin - if DBRightClickSelectedItem <> nil then Exit; // toggle drop-items and remember right-clicked item PopupMenuDropDatabase.Enabled := DBtree.Selected.Level = 1; PopupMenuCreateTable.Enabled := DBtree.Selected.Level in [1,2]; @@ -4524,13 +4534,6 @@ begin menuAlterDatabase.Hint := 'Rename and/or modify character set of database'; menuTreeAlterTable.Enabled := DBtree.Selected.Level = 2; MainForm.DropTable.Enabled := DBtree.Selected.Level = 2; - DBRightClickSelectedItem := DBtree.Selected; - try - popupTreeView.Popup(Mouse.CursorPos.X, Mouse.CursorPos.Y); - Abort; - finally - PostMessage(MainForm.Handle, WM_CLEAR_RIGHTCLICK_POINTER, 0, 0); - end; end; diff --git a/source/main.pas b/source/main.pas index 0a1bf639..9078fcbd 100644 --- a/source/main.pas +++ b/source/main.pas @@ -285,6 +285,7 @@ end; procedure TMainForm.HandleWMClearRightClickPointer(var msg: TMessage); begin + debug('clearing stored right click item'); ChildWin.DBRightClickSelectedItem := nil; end; @@ -955,6 +956,7 @@ var t : TStringList; db, msg, sql, activeDB : String; begin + debug('drop table activated'); t := TStringlist.Create; // Set default database name to to ActiveDatabase. // Can be overwritten when someone selects a table in dbtree from different database