浏览代码

Monitoring for created keys was not stopped on page change

Source commit: 8b68d8709f84fd36a0c3ad9762fc4f4c71df1e7e
Martin Prikryl 6 年之前
父节点
当前提交
74aafa04d2
共有 2 个文件被更改,包括 13 次插入4 次删除
  1. 12 4
      source/forms/SiteAdvanced.cpp
  2. 1 0
      source/forms/SiteAdvanced.h

+ 12 - 4
source/forms/SiteAdvanced.cpp

@@ -1108,6 +1108,7 @@ void __fastcall TSiteAdvancedDialog::NavigationTreeChange(TObject * /*Sender*/,
       ResetSystemSettings(this);
     }
 
+    PageChanged();
     UpdateControls();
   }
 }
@@ -1115,12 +1116,13 @@ void __fastcall TSiteAdvancedDialog::NavigationTreeChange(TObject * /*Sender*/,
 void __fastcall TSiteAdvancedDialog::ChangePage(TTabSheet * Tab)
 {
   PageControl->ActivePage = Tab;
-  PageControlChange(PageControl);
-  FPrivateKeyMonitors.reset(NULL);
+  PageChanged();
 }
 //---------------------------------------------------------------------------
-void __fastcall TSiteAdvancedDialog::PageControlChange(TObject *Sender)
+void __fastcall TSiteAdvancedDialog::PageChanged()
 {
+  FPrivateKeyMonitors.reset(NULL);
+
   bool Found = false;
   if (PageControl->ActivePage)
   {
@@ -1137,10 +1139,16 @@ void __fastcall TSiteAdvancedDialog::PageControlChange(TObject *Sender)
 
   if (DebugAlwaysTrue(Found))
   {
-    DataChange(Sender);
+    DataChange(NULL);
   }
 }
 //---------------------------------------------------------------------------
+void __fastcall TSiteAdvancedDialog::PageControlChange(TObject *)
+{
+  DebugFail(); // should never happen as user cannot change the page
+  PageChanged();
+}
+//---------------------------------------------------------------------------
 void __fastcall TSiteAdvancedDialog::CMDialogKey(TWMKeyDown & Message)
 {
   if (Message.CharCode == VK_TAB)

+ 1 - 0
source/forms/SiteAdvanced.h

@@ -323,6 +323,7 @@ public:
 
 protected:
   void __fastcall ChangePage(TTabSheet * Tab);
+  void __fastcall PageChanged();
   virtual void __fastcall Dispatch(void * Message);
   bool __fastcall AllowAlgDrag(TListBox * AlgListBox, int X, int Y);
   void __fastcall AlgMove(TListBox * AlgListBox, int Source, int Dest);