VeraCrypt
aboutsummaryrefslogtreecommitdiff
path: root/src/Main/Forms
diff options
context:
space:
mode:
Diffstat (limited to 'src/Main/Forms')
-rw-r--r--src/Main/Forms/MainFrame.cpp13
-rw-r--r--src/Main/Forms/MainFrame.h19
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);
}