MacOSX: Ensure that main window is visible on screen when About is display as a way to workaround for situations where UI is not visible or can't be move (for example, when changing display monitor with a different resolution).

This commit is contained in:
Mounir IDRASSI 2019-12-15 17:59:38 +01:00
parent a4ed6be38c
commit a81d45df82
No known key found for this signature in database
GPG Key ID: 02C30AE90FAE4A6F
2 changed files with 22 additions and 0 deletions

View File

@ -725,6 +725,7 @@ namespace VeraCrypt
#ifdef TC_MACOSX
if (Gui->IsInBackgroundMode())
Gui->SetBackgroundMode (false);
EnsureVisible ();
#endif
AboutDialog dialog (this);
dialog.ShowModal();

View File

@ -15,6 +15,7 @@
#include "Forms.h"
#include "ChangePasswordDialog.h"
#include <wx/display.h>
namespace VeraCrypt
{
@ -161,6 +162,26 @@ namespace VeraCrypt
void UpdateVolumeList ();
void UpdateWipeCacheButton ();
void WipeCache ();
void EnsureVisible()
{
wxDisplay display (this);
wxRect displayRect = display.GetClientArea();
bool bMove = false;
wxPoint p = GetScreenPosition();
wxRect r = GetRect ();
if (p.x < displayRect.x)
p.x = 0, bMove = true;
if (p.y < displayRect.y)
p.y = displayRect.y, bMove = true;
if (p.x + r.width > displayRect.x + displayRect.width)
p.x = displayRect.x + displayRect.width - r.width, bMove = true;
if (p.y + r.height > displayRect.y + displayRect.height)
p.y = displayRect.y + displayRect.height - r.height, bMove = true;
if (bMove)
Move (p);
}
struct VolumeActivityMapEntry
{