Jelajahi Sumber

Bug 1463: Wrong layout of Login dialog on monitors with low vertical resolution (improved fix)

https://winscp.net/tracker/1463

Source commit: 4c299e558b611abb50877cf88955c8d278d9a9e6
Martin Prikryl 8 tahun lalu
induk
melakukan
0c88603f34
2 mengubah file dengan 9 tambahan dan 0 penghapusan
  1. 8 0
      source/forms/Login.cpp
  2. 1 0
      source/forms/Login.h

+ 8 - 0
source/forms/Login.cpp

@@ -81,6 +81,8 @@ __fastcall TLoginDialog::TLoginDialog(TComponent* AOwner)
 
   FBasicGroupBaseHeight = BasicGroup->Height - BasicSshPanel->Height - BasicFtpPanel->Height;
   FNoteGroupOffset = NoteGroup->Top - (BasicGroup->Top + BasicGroup->Height);
+
+  FSiteButtonsPadding = SitesPanel->ClientHeight - ToolsMenuButton->Top - ToolsMenuButton->Height;
   HideComponentsPanel(this);
 }
 //---------------------------------------------------------------------
@@ -686,6 +688,12 @@ void __fastcall TLoginDialog::FormShow(TObject * /*Sender*/)
     Init();
   }
 
+  // WORKAROUND for a bug in the VCL layout code for bottom aligned controls
+  int Offset = (SitesPanel->ClientHeight - FSiteButtonsPadding - ToolsMenuButton->Height) - ToolsMenuButton->Top;
+  ToolsMenuButton->Top = ToolsMenuButton->Top + Offset;
+  ManageButton->Top = ManageButton->Top + Offset;
+  SessionTree->Height = SessionTree->Height + Offset;
+
   // among other this makes the expanded nodes look like expanded,
   // because the LoadState call in Execute would be too early,
   // and some stray call to collapsed event during showing process,

+ 1 - 0
source/forms/Login.h

@@ -309,6 +309,7 @@ private:
   TSiteSearch FSiteSearch;
   TForm * FLinkedForm;
   TPoint FPrevPos;
+  int FSiteButtonsPadding;
 
   void __fastcall LoadSession(TSessionData * SessionData);
   void __fastcall LoadContents();