Browse Source

Bug fix: Minimize buttons on Login and Find windows did not minimize the application + Minimize buttons on Console and Synchronization checklist windows enabled

Source commit: c159171d9663ca2e17dada9e94a5b3071b61c188
Martin Prikryl 10 years ago
parent
commit
4836e85e0b

+ 16 - 0
source/forms/Console.cpp

@@ -357,3 +357,19 @@ void __fastcall TConsoleDialog::FormCloseQuery(TObject * /*Sender*/, bool & CanC
   CanClose = !FExecuting;
 }
 //---------------------------------------------------------------------------
+void __fastcall TConsoleDialog::Dispatch(void * Message)
+{
+  TMessage * M = reinterpret_cast<TMessage*>(Message);
+  if (M->Msg == WM_SYSCOMMAND)
+  {
+    if (!HandleMinimizeSysCommand(*M))
+    {
+      TForm::Dispatch(Message);
+    }
+  }
+  else
+  {
+    TForm::Dispatch(Message);
+  }
+}
+//---------------------------------------------------------------------------

+ 1 - 1
source/forms/Console.dfm

@@ -3,7 +3,7 @@ object ConsoleDialog: TConsoleDialog
   Top = 169
   HelpType = htKeyword
   HelpKeyword = 'ui_console'
-  BorderIcons = [biSystemMenu, biMaximize, biHelp]
+  BorderIcons = [biSystemMenu, biMinimize, biMaximize, biHelp]
   Caption = 'Console'
   ClientHeight = 393
   ClientWidth = 551

+ 1 - 0
source/forms/Console.h

@@ -76,6 +76,7 @@ protected:
   void __fastcall DoChangeDirectory(TObject * Sender);
   void __fastcall UpdateControls();
   virtual void __fastcall CreateParams(TCreateParams & Params);
+  virtual void __fastcall Dispatch(void * Message);
   void __fastcall DoAdjustWindow();
 
 public:

+ 16 - 0
source/forms/FileFind.cpp

@@ -423,3 +423,19 @@ void __fastcall TFileFindDialog::CopyButtonClick(TObject * /*Sender*/)
   CopyToClipboard();
 }
 //---------------------------------------------------------------------------
+void __fastcall TFileFindDialog::Dispatch(void * Message)
+{
+  TMessage * M = reinterpret_cast<TMessage*>(Message);
+  if (M->Msg == WM_SYSCOMMAND)
+  {
+    if (!HandleMinimizeSysCommand(*M))
+    {
+      TForm::Dispatch(Message);
+    }
+  }
+  else
+  {
+    TForm::Dispatch(Message);
+  }
+}
+//---------------------------------------------------------------------------

+ 2 - 0
source/forms/FileFind.h

@@ -69,6 +69,8 @@ protected:
   void __fastcall UpdateControls();
   bool __fastcall IsFinding();
 
+  virtual void __fastcall Dispatch(void * Message);
+
 private:
   enum { ffInit, ffFinding, ffAborting, ffAborted, ffDone } FState;
   bool FMinimizedByMe;

+ 7 - 0
source/forms/Login.cpp

@@ -1553,6 +1553,13 @@ void __fastcall TLoginDialog::Dispatch(void * Message)
     }
     TForm::Dispatch(Message);
   }
+  else if (M->Msg == WM_SYSCOMMAND)
+  {
+    if (!HandleMinimizeSysCommand(*M))
+    {
+      TForm::Dispatch(Message);
+    }
+  }
   else
   {
     TForm::Dispatch(Message);

+ 16 - 0
source/forms/SynchronizeChecklist.cpp

@@ -1040,3 +1040,19 @@ void __fastcall TSynchronizeChecklistDialog::ListViewClick(TObject * /*Sender*/)
   }
 }
 //---------------------------------------------------------------------------
+void __fastcall TSynchronizeChecklistDialog::Dispatch(void * Message)
+{
+  TMessage * M = reinterpret_cast<TMessage*>(Message);
+  if (M->Msg == WM_SYSCOMMAND)
+  {
+    if (!HandleMinimizeSysCommand(*M))
+    {
+      TForm::Dispatch(Message);
+    }
+  }
+  else
+  {
+    TForm::Dispatch(Message);
+  }
+}
+//---------------------------------------------------------------------------

+ 1 - 1
source/forms/SynchronizeChecklist.dfm

@@ -3,7 +3,7 @@ object SynchronizeChecklistDialog: TSynchronizeChecklistDialog
   Top = 169
   HelpType = htKeyword
   HelpKeyword = 'ui_synchronize_checklist'
-  BorderIcons = [biSystemMenu, biMaximize, biHelp]
+  BorderIcons = [biSystemMenu, biMinimize, biMaximize, biHelp]
   Caption = 'Synchronization checklist'
   ClientHeight = 521
   ClientWidth = 695

+ 1 - 0
source/forms/SynchronizeChecklist.h

@@ -134,6 +134,7 @@ protected:
     const TSynchronizeChecklist::TItem * ChecklistItem);
   void __fastcall AddSubItem(TListItem * Item, int & Index, const UnicodeString & S);
   TRect __fastcall GetColumnHeaderRect(int Index);
+  virtual void __fastcall Dispatch(void * Message);
   static int __fastcall CompareNumber(__int64 Value1, __int64 Value2);
 };
 //----------------------------------------------------------------------------

+ 13 - 0
source/windows/WinInterface.cpp

@@ -1235,6 +1235,19 @@ bool __fastcall IsApplicationMinimized()
   return AppMinimized || MainFormMinimized;
 }
 //---------------------------------------------------------------------------
+bool __fastcall HandleMinimizeSysCommand(TMessage & Message)
+{
+  TWMSysCommand & SysCommand = reinterpret_cast<TWMSysCommand &>(Message);
+  unsigned int Cmd = (SysCommand.CmdType & 0xFFF0);
+  bool Result = (Cmd == SC_MINIMIZE);
+  if (Result)
+  {
+    ApplicationMinimize();
+    SysCommand.Result = 1;
+  }
+  return Result;
+}
+//---------------------------------------------------------------------------
 void __fastcall WinInitialize()
 {
   if (JclHookExceptions())

+ 2 - 0
source/windows/WinInterface.h

@@ -460,6 +460,8 @@ void __fastcall CallGlobalMinimizeHandler(TObject * Sender);
 bool __fastcall IsApplicationMinimized();
 void __fastcall ApplicationMinimize();
 void __fastcall ApplicationRestore();
+bool __fastcall HandleMinimizeSysCommand(TMessage & Message);
+
 void __fastcall WinInitialize();
 void __fastcall WinFinalize();