From db57ad61d5ff734085329285789f72386da7ca0f Mon Sep 17 00:00:00 2001
From: rswindell <>
Date: Thu, 13 Sep 2001 18:33:04 +0000
Subject: [PATCH] Added code to handle new "UndockableForms" property to
 disallow window undocking.

---
 src/sbbs3/ctrl/MainFormUnit.cpp | 45 ++++++++++++++++++++++-----------
 src/sbbs3/ctrl/MainFormUnit.h   |  3 +++
 2 files changed, 33 insertions(+), 15 deletions(-)

diff --git a/src/sbbs3/ctrl/MainFormUnit.cpp b/src/sbbs3/ctrl/MainFormUnit.cpp
index 5bdf622446..fdd835bd4c 100644
--- a/src/sbbs3/ctrl/MainFormUnit.cpp
+++ b/src/sbbs3/ctrl/MainFormUnit.cpp
@@ -522,6 +522,7 @@ __fastcall TMainForm::TMainForm(TComponent* Owner)
     LoginCommand="telnet://localhost";
     ConfigCommand="%sSCFG %s /T2";
     MinimizeToSysTray=false;
+    UndockableForms=false;
     NodeDisplayInterval=1;  /* seconds */
     ClientDisplayInterval=5;    /* seconds */
     Initialized=false;
@@ -1033,21 +1034,25 @@ void __fastcall TMainForm::StartupTimerTick(TObject *Sender)
     if(Registry->ValueExists("LowerLeftPageControlWidth"))
     	LowerLeftPageControl->Width
         	=Registry->ReadInteger("LowerLeftPageControlWidth");
-
-    if(Registry->ValueExists("TelnetFormFloating"))
-    	TelnetFormFloating=Registry->ReadBool("TelnetFormFloating");
-    if(Registry->ValueExists("EventsFormFloating"))
-    	EventsFormFloating=Registry->ReadBool("EventsFormFloating");
-    if(Registry->ValueExists("NodeFormFloating"))
-    	NodeFormFloating=Registry->ReadBool("NodeFormFloating");
-    if(Registry->ValueExists("StatsFormFloating"))
-    	StatsFormFloating=Registry->ReadBool("StatsFormFloating");
-    if(Registry->ValueExists("ClientFormFloating"))
-    	ClientFormFloating=Registry->ReadBool("ClientFormFloating");
-    if(Registry->ValueExists("MailFormFloating"))
-    	MailFormFloating=Registry->ReadBool("MailFormFloating");
-    if(Registry->ValueExists("FtpFormFloating"))
-    	FtpFormFloating=Registry->ReadBool("FtpFormFloating");
+    if(Registry->ValueExists("UndockableForms"))
+        UndockableForms=Registry->ReadBool("UndockableForms");
+
+    if(UndockableForms) {
+        if(Registry->ValueExists("TelnetFormFloating"))
+            TelnetFormFloating=Registry->ReadBool("TelnetFormFloating");
+        if(Registry->ValueExists("EventsFormFloating"))
+            EventsFormFloating=Registry->ReadBool("EventsFormFloating");
+        if(Registry->ValueExists("NodeFormFloating"))
+            NodeFormFloating=Registry->ReadBool("NodeFormFloating");
+        if(Registry->ValueExists("StatsFormFloating"))
+            StatsFormFloating=Registry->ReadBool("StatsFormFloating");
+        if(Registry->ValueExists("ClientFormFloating"))
+            ClientFormFloating=Registry->ReadBool("ClientFormFloating");
+        if(Registry->ValueExists("MailFormFloating"))
+            MailFormFloating=Registry->ReadBool("MailFormFloating");
+        if(Registry->ValueExists("FtpFormFloating"))
+            FtpFormFloating=Registry->ReadBool("FtpFormFloating");
+    }
 
     if(Registry->ValueExists("TelnetFormPage"))
     	TelnetFormPage=Registry->ReadInteger("TelnetFormPage");
@@ -1476,6 +1481,8 @@ void __fastcall TMainForm::SaveSettings(TObject* Sender)
     Registry->WriteInteger("LowerLeftPageControlWidth"
     	,LowerLeftPageControl->Width);
 
+    Registry->WriteBool("UndockableForms",UndockableForms);
+    
     Registry->WriteBool("TelnetFormFloating",TelnetForm->Floating);
     Registry->WriteBool("EventsFormFloating",EventsForm->Floating);
     Registry->WriteBool("NodeFormFloating",NodeForm->Floating);
@@ -1983,3 +1990,11 @@ void __fastcall TMainForm::BBSConfigWizardMenuItemClick(TObject *Sender)
 }
 //---------------------------------------------------------------------------
 
+void __fastcall TMainForm::PageControlUnDock(TObject *Sender,
+      TControl *Client, TWinControl *NewTarget, bool &Allow)
+{
+    if(NewTarget==NULL) /* Desktop */
+        Allow=UndockableForms;
+}
+//---------------------------------------------------------------------------
+
diff --git a/src/sbbs3/ctrl/MainFormUnit.h b/src/sbbs3/ctrl/MainFormUnit.h
index c7784a8476..74989a0966 100644
--- a/src/sbbs3/ctrl/MainFormUnit.h
+++ b/src/sbbs3/ctrl/MainFormUnit.h
@@ -284,6 +284,8 @@ __published:	// IDE-managed Components
     void __fastcall ViewEventsExecute(TObject *Sender);
     void __fastcall DataMenuItemClick(TObject *Sender);
     void __fastcall BBSConfigWizardMenuItemClick(TObject *Sender);
+    void __fastcall PageControlUnDock(TObject *Sender,
+          TControl *Client, TWinControl *NewTarget, bool &Allow);
 private:	// User declarations
 public:		// User declarations
     __fastcall TMainForm(TComponent* Owner);
@@ -298,6 +300,7 @@ public:		// User declarations
     AnsiString      LoginCommand;
     AnsiString      ConfigCommand;
     bool            MinimizeToSysTray;
+    bool            UndockableForms;
     scfg_t		    cfg;
     bbs_startup_t 	bbs_startup;
     mail_startup_t 	mail_startup;
-- 
GitLab