Quellcode durchsuchen

Bug 1870: Starting synchronization in a new window should be disabled when "Selected files only" option is selected, as that combination is not implemented

https://winscp.net/tracker/1870

Source commit: 76e2e5b481bbd1e04b7455fef923dffda856b0f2
Martin Prikryl vor 5 Jahren
Ursprung
Commit
5d75f6b10d

+ 19 - 4
source/forms/FullSynchronize.cpp

@@ -139,6 +139,7 @@ void __fastcall TFullSynchronizeDialog::UpdateControls()
       TCustomButton::bsSplitButton : TCustomButton::bsPushButton;
 
   OkButton->Style = AllowStartInNewWindow() ? TCustomButton::bsSplitButton : TCustomButton::bsPushButton;
+  StartInNewWindowItem->Enabled = CanStartInNewWindow();
 }
 //---------------------------------------------------------------------------
 int __fastcall TFullSynchronizeDialog::ActualCopyParamAttrs()
@@ -443,6 +444,13 @@ bool __fastcall TFullSynchronizeDialog::AllowStartInNewWindow()
   return !IsMainFormLike(this);
 }
 //---------------------------------------------------------------------------
+bool __fastcall TFullSynchronizeDialog::CanStartInNewWindow()
+{
+  return
+    AllowStartInNewWindow() &&
+    (!SynchronizeSelectedOnlyCheck->Enabled || !SynchronizeSelectedOnlyCheck->Checked);
+}
+//---------------------------------------------------------------------------
 void __fastcall TFullSynchronizeDialog::Start1Click(TObject *)
 {
   OkButton->Click();
@@ -455,10 +463,17 @@ void __fastcall TFullSynchronizeDialog::OkButtonDropDownClick(TObject *)
 //---------------------------------------------------------------------------
 void __fastcall TFullSynchronizeDialog::OkButtonClick(TObject *)
 {
-  if (AllowStartInNewWindow() && OpenInNewWindow())
+  if (OpenInNewWindow())
   {
-    StartInNewWindow();
-    ModalResult = mrCancel;
+    if (CanStartInNewWindow())
+    {
+      StartInNewWindow();
+      ModalResult = mrCancel;
+    }
+    else
+    {
+      Beep();
+    }
     Abort();
   }
 }
@@ -471,7 +486,7 @@ void __fastcall TFullSynchronizeDialog::StartInNewWindow()
   Close();
 }
 //---------------------------------------------------------------------------
-void __fastcall TFullSynchronizeDialog::StartInNewWindow1Click(TObject *)
+void __fastcall TFullSynchronizeDialog::StartInNewWindowItemClick(TObject *)
 {
   StartInNewWindow();
 }

+ 2 - 2
source/forms/FullSynchronize.dfm

@@ -330,9 +330,9 @@ object FullSynchronizeDialog: TFullSynchronizeDialog
       Default = True
       OnClick = Start1Click
     end
-    object StartInNewWindow1: TMenuItem
+    object StartInNewWindowItem: TMenuItem
       Caption = 'Start in &New Window'
-      OnClick = StartInNewWindow1Click
+      OnClick = StartInNewWindowItemClick
     end
   end
 end

+ 3 - 2
source/forms/FullSynchronize.h

@@ -50,7 +50,7 @@ __published:
   TImage *Image;
   TPopupMenu *OkMenu;
   TMenuItem *Start1;
-  TMenuItem *StartInNewWindow1;
+  TMenuItem *StartInNewWindowItem;
   void __fastcall ControlChange(TObject *Sender);
   void __fastcall LocalDirectoryBrowseButtonClick(TObject *Sender);
   void __fastcall TransferSettingsButtonClick(TObject *Sender);
@@ -64,7 +64,7 @@ __published:
   void __fastcall Start1Click(TObject *Sender);
   void __fastcall OkButtonDropDownClick(TObject *Sender);
   void __fastcall OkButtonClick(TObject *Sender);
-  void __fastcall StartInNewWindow1Click(TObject *Sender);
+  void __fastcall StartInNewWindowItemClick(TObject *Sender);
 
 private:
   int FParams;
@@ -93,6 +93,7 @@ private:
   int __fastcall ActualCopyParamAttrs();
   void __fastcall CopyParamListPopup(TRect R, int AdditionalOptions);
   bool __fastcall AllowStartInNewWindow();
+  bool __fastcall CanStartInNewWindow();
   void __fastcall Submitted();
   void __fastcall StartInNewWindow();
 

+ 18 - 3
source/forms/Synchronize.cpp

@@ -200,6 +200,7 @@ void __fastcall TSynchronizeDialog::UpdateControls()
     !WinConfiguration->MinimizeToTray ? TCustomButton::bsSplitButton : TCustomButton::bsPushButton;
 
   StartButton->Style = AllowStartInNewWindow() ? TCustomButton::bsSplitButton : TCustomButton::bsPushButton;
+  StartInNewWindowItem->Enabled = CanStartInNewWindow();
 }
 //---------------------------------------------------------------------------
 bool __fastcall TSynchronizeDialog::AllowStartInNewWindow()
@@ -207,6 +208,13 @@ bool __fastcall TSynchronizeDialog::AllowStartInNewWindow()
   return !IsMainFormLike(this);
 }
 //---------------------------------------------------------------------------
+bool __fastcall TSynchronizeDialog::CanStartInNewWindow()
+{
+  return
+    AllowStartInNewWindow() &&
+    (!SynchronizeSelectedOnlyCheck->Enabled || !SynchronizeSelectedOnlyCheck->Checked);
+}
+//---------------------------------------------------------------------------
 void __fastcall TSynchronizeDialog::ControlChange(TObject * /*Sender*/)
 {
   UpdateControls();
@@ -417,9 +425,16 @@ void __fastcall TSynchronizeDialog::DoLog(TSynchronizeController * /*Controller*
 //---------------------------------------------------------------------------
 void __fastcall TSynchronizeDialog::StartButtonClick(TObject * /*Sender*/)
 {
-  if (AllowStartInNewWindow() && OpenInNewWindow())
+  if (OpenInNewWindow())
   {
-    StartInNewWindow();
+    if (CanStartInNewWindow())
+    {
+      StartInNewWindow();
+    }
+    else
+    {
+      Beep();
+    }
   }
   else
   {
@@ -743,7 +758,7 @@ void __fastcall TSynchronizeDialog::MinimizeButtonDropDownClick(TObject * /*Send
   MenuPopup(MinimizeMenu, MinimizeButton);
 }
 //---------------------------------------------------------------------------
-void __fastcall TSynchronizeDialog::StartInNewWindow1Click(TObject * /*Sender*/)
+void __fastcall TSynchronizeDialog::StartInNewWindowItemClick(TObject * /*Sender*/)
 {
   StartInNewWindow();
 }

+ 2 - 2
source/forms/Synchronize.dfm

@@ -322,9 +322,9 @@ object SynchronizeDialog: TSynchronizeDialog
       Default = True
       OnClick = StartButtonClick
     end
-    object StartInNewWindow1: TMenuItem
+    object StartInNewWindowItem: TMenuItem
       Caption = 'Start in &New Window'
-      OnClick = StartInNewWindow1Click
+      OnClick = StartInNewWindowItemClick
     end
   end
 end

+ 3 - 2
source/forms/Synchronize.h

@@ -51,7 +51,7 @@ __published:
   TMenuItem *MinimizetoTray1;
   TPopupMenu *StartMenu;
   TMenuItem *Start1;
-  TMenuItem *StartInNewWindow1;
+  TMenuItem *StartInNewWindowItem;
   void __fastcall ControlChange(TObject *Sender);
   void __fastcall LocalDirectoryBrowseButtonClick(TObject *Sender);
   void __fastcall TransferSettingsButtonClick(TObject *Sender);
@@ -76,7 +76,7 @@ __published:
   void __fastcall Minimize1Click(TObject *Sender);
   void __fastcall MinimizetoTray1Click(TObject *Sender);
   void __fastcall MinimizeButtonDropDownClick(TObject *Sender);
-  void __fastcall StartInNewWindow1Click(TObject *Sender);
+  void __fastcall StartInNewWindowItemClick(TObject *Sender);
   void __fastcall StartButtonDropDownClick(TObject *Sender);
 
 private:
@@ -133,6 +133,7 @@ protected:
   void __fastcall SaveHistory();
   void __fastcall UpdateControls();
   bool __fastcall AllowStartInNewWindow();
+  bool __fastcall CanStartInNewWindow();
 
   INTERFACE_HOOK;