diff options
author | Mounir IDRASSI <mounir.idrassi@idrix.fr> | 2019-12-15 22:08:05 +0100 |
---|---|---|
committer | Mounir IDRASSI <mounir.idrassi@idrix.fr> | 2019-12-16 00:46:41 +0100 |
commit | 1e978e69cc3fdd3482091c770014646349812023 (patch) | |
tree | ca494a0cfc26be5a564963245467593bbd93c8a0 | |
parent | a81d45df820887cd9c66fb99d921f73632237bfc (diff) | |
download | VeraCrypt-1e978e69cc3fdd3482091c770014646349812023.tar.gz VeraCrypt-1e978e69cc3fdd3482091c770014646349812023.zip |
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)
-rw-r--r-- | src/Main/Forms/MainFrame.cpp | 13 | ||||
-rw-r--r-- | src/Main/Forms/MainFrame.h | 19 |
2 files changed, 27 insertions, 5 deletions
diff --git a/src/Main/Forms/MainFrame.cpp b/src/Main/Forms/MainFrame.cpp index 8e0c401b..25853193 100644 --- a/src/Main/Forms/MainFrame.cpp +++ b/src/Main/Forms/MainFrame.cpp @@ -99,6 +99,9 @@ namespace VeraCrypt Connect( wxID_ANY, wxEVT_COMMAND_PREF_UPDATED, wxCommandEventHandler( MainFrame::OnPreferencesUpdated ) ); 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 () @@ -119,6 +122,9 @@ namespace VeraCrypt 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_OPEN_VOLUME_REQUEST, wxCommandEventHandler( MainFrame::OnOpenVolumeSystemRequest ) ); +#ifdef TC_MACOSX + Disconnect( wxID_ANY, wxEVT_MOVE, wxMoveEventHandler( MainFrame::OnMoveHandler ) ); +#endif Core->VolumeMountedEvent.Disconnect (this); Core->VolumeDismountedEvent.Disconnect (this); Gui->OpenVolumeSystemRequestEvent.Disconnect (this); @@ -1723,4 +1729,11 @@ namespace VeraCrypt Core->WipePasswordCache(); UpdateWipeCacheButton(); } + +#ifdef TC_MACOSX + void MainFrame::OnMoveHandler(wxMoveEvent& event) + { + EnsureVisible (true); + } +#endif } diff --git a/src/Main/Forms/MainFrame.h b/src/Main/Forms/MainFrame.h index b8991b73..d481daf5 100644 --- a/src/Main/Forms/MainFrame.h +++ b/src/Main/Forms/MainFrame.h @@ -162,8 +162,12 @@ namespace VeraCrypt void UpdateVolumeList (); void UpdateWipeCacheButton (); void WipeCache (); - - void EnsureVisible() + +#ifdef TC_MACOSX + void OnMoveHandler(wxMoveEvent& event); +#endif + + void EnsureVisible(bool bOnlyHeadingBar = false) { wxDisplay display (this); wxRect displayRect = display.GetClientArea(); @@ -171,14 +175,19 @@ namespace VeraCrypt bool bMove = false; wxPoint p = GetScreenPosition(); 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; if (p.y < displayRect.y) 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; - 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; + if (bOnlyHeadingBar && (p.y > (displayRect.y + displayRect.height - titleBarHeight))) + p.y = displayRect.y + displayRect.height - titleBarHeight, bMove = true; if (bMove) Move (p); } |