1
0
mirror of https://github.com/veracrypt/VeraCrypt.git synced 2025-11-11 11:08:02 -06:00

MacOSX: Ensure that the heading bar is always visible when window is moved so that it can still be moved by user using mouse (https://github.com/veracrypt/VeraCrypt/issues/546)

This commit is contained in:
Mounir IDRASSI
2019-12-15 22:08:05 +01:00
parent a81d45df82
commit 1e978e69cc
2 changed files with 27 additions and 5 deletions

View File

@@ -99,6 +99,9 @@ namespace VeraCrypt
Connect( wxID_ANY, wxEVT_COMMAND_PREF_UPDATED, wxCommandEventHandler( MainFrame::OnPreferencesUpdated ) ); Connect( wxID_ANY, wxEVT_COMMAND_PREF_UPDATED, wxCommandEventHandler( MainFrame::OnPreferencesUpdated ) );
Connect( wxID_ANY, wxEVT_COMMAND_OPEN_VOLUME_REQUEST, wxCommandEventHandler( MainFrame::OnOpenVolumeSystemRequest ) ); Connect( wxID_ANY, wxEVT_COMMAND_OPEN_VOLUME_REQUEST, wxCommandEventHandler( MainFrame::OnOpenVolumeSystemRequest ) );
#ifdef TC_MACOSX
Connect( wxID_ANY, wxEVT_MOVE, wxMoveEventHandler( MainFrame::OnMoveHandler ) );
#endif
} }
MainFrame::~MainFrame () MainFrame::~MainFrame ()
@@ -119,6 +122,9 @@ namespace VeraCrypt
Disconnect( wxID_ANY, wxEVT_COMMAND_UPDATE_VOLUME_LIST, wxCommandEventHandler( MainFrame::OnUpdateVolumeList ) ); Disconnect( wxID_ANY, wxEVT_COMMAND_UPDATE_VOLUME_LIST, wxCommandEventHandler( MainFrame::OnUpdateVolumeList ) );
Disconnect( wxID_ANY, wxEVT_COMMAND_PREF_UPDATED, wxCommandEventHandler( MainFrame::OnPreferencesUpdated ) ); Disconnect( wxID_ANY, wxEVT_COMMAND_PREF_UPDATED, wxCommandEventHandler( MainFrame::OnPreferencesUpdated ) );
Disconnect( wxID_ANY, wxEVT_COMMAND_OPEN_VOLUME_REQUEST, wxCommandEventHandler( MainFrame::OnOpenVolumeSystemRequest ) ); Disconnect( wxID_ANY, wxEVT_COMMAND_OPEN_VOLUME_REQUEST, wxCommandEventHandler( MainFrame::OnOpenVolumeSystemRequest ) );
#ifdef TC_MACOSX
Disconnect( wxID_ANY, wxEVT_MOVE, wxMoveEventHandler( MainFrame::OnMoveHandler ) );
#endif
Core->VolumeMountedEvent.Disconnect (this); Core->VolumeMountedEvent.Disconnect (this);
Core->VolumeDismountedEvent.Disconnect (this); Core->VolumeDismountedEvent.Disconnect (this);
Gui->OpenVolumeSystemRequestEvent.Disconnect (this); Gui->OpenVolumeSystemRequestEvent.Disconnect (this);
@@ -1723,4 +1729,11 @@ namespace VeraCrypt
Core->WipePasswordCache(); Core->WipePasswordCache();
UpdateWipeCacheButton(); UpdateWipeCacheButton();
} }
#ifdef TC_MACOSX
void MainFrame::OnMoveHandler(wxMoveEvent& event)
{
EnsureVisible (true);
}
#endif
} }

View File

@@ -162,8 +162,12 @@ namespace VeraCrypt
void UpdateVolumeList (); void UpdateVolumeList ();
void UpdateWipeCacheButton (); void UpdateWipeCacheButton ();
void WipeCache (); void WipeCache ();
void EnsureVisible() #ifdef TC_MACOSX
void OnMoveHandler(wxMoveEvent& event);
#endif
void EnsureVisible(bool bOnlyHeadingBar = false)
{ {
wxDisplay display (this); wxDisplay display (this);
wxRect displayRect = display.GetClientArea(); wxRect displayRect = display.GetClientArea();
@@ -171,14 +175,19 @@ namespace VeraCrypt
bool bMove = false; bool bMove = false;
wxPoint p = GetScreenPosition(); wxPoint p = GetScreenPosition();
wxRect r = GetRect (); wxRect r = GetRect ();
if (p.x < displayRect.x) wxRect rc = GetClientRect ();
int titleBarHeight = r.height - rc.height;
if (!bOnlyHeadingBar && (p.x < displayRect.x))
p.x = 0, bMove = true; p.x = 0, bMove = true;
if (p.y < displayRect.y) if (p.y < displayRect.y)
p.y = displayRect.y, bMove = true; p.y = displayRect.y, bMove = true;
if (p.x + r.width > displayRect.x + displayRect.width) if (!bOnlyHeadingBar && (p.x + r.width > displayRect.x + displayRect.width))
p.x = displayRect.x + displayRect.width - r.width, bMove = true; p.x = displayRect.x + displayRect.width - r.width, bMove = true;
if (p.y + r.height > displayRect.y + displayRect.height) if (!bOnlyHeadingBar && (p.y + r.height > displayRect.y + displayRect.height))
p.y = displayRect.y + displayRect.height - r.height, bMove = true; p.y = displayRect.y + displayRect.height - r.height, bMove = true;
if (bOnlyHeadingBar && (p.y > (displayRect.y + displayRect.height - titleBarHeight)))
p.y = displayRect.y + displayRect.height - titleBarHeight, bMove = true;
if (bMove) if (bMove)
Move (p); Move (p);
} }