diff options
Diffstat (limited to 'src/Main/Forms/MainFrame.cpp')
-rw-r--r-- | src/Main/Forms/MainFrame.cpp | 7 |
1 files changed, 7 insertions, 0 deletions
diff --git a/src/Main/Forms/MainFrame.cpp b/src/Main/Forms/MainFrame.cpp index 6355f139..77f371d8 100644 --- a/src/Main/Forms/MainFrame.cpp +++ b/src/Main/Forms/MainFrame.cpp @@ -52,70 +52,71 @@ namespace VeraCrypt ListItemRightClickEventPending (false), SelectedItemIndex (-1), SelectedSlotNumber (0), ShowRequestFifo (-1) { wxBusyCursor busy; SetName (Application::GetName()); SetTitle (Application::GetName()); SetIcon (Resources::GetVeraCryptIcon()); #if defined(TC_UNIX) && !defined(TC_MACOSX) try { string fifoPath = GetShowRequestFifoPath(); remove (fifoPath.c_str()); throw_sys_if (mkfifo (fifoPath.c_str(), S_IRUSR | S_IWUSR) == -1); ShowRequestFifo = open (fifoPath.c_str(), O_RDONLY | O_NONBLOCK); throw_sys_if (ShowRequestFifo == -1); } catch (...) { #ifdef DEBUG throw; #endif } #endif InitControls(); InitPreferences(); InitTaskBarIcon(); InitEvents(); InitMessageFilter(); + InitWindowPrivacy(); if (!GetPreferences().SecurityTokenModule.IsEmpty() && !SecurityToken::IsInitialized()) { try { Gui->InitSecurityTokenLibrary(); } catch (exception &e) { Gui->ShowError (e); } } Connect( wxID_EXIT, wxEVT_COMMAND_MENU_SELECTED, wxCommandEventHandler( MainFrame::OnQuit ) ); Connect( wxID_ANY, wxEVT_COMMAND_UPDATE_VOLUME_LIST, wxCommandEventHandler( MainFrame::OnUpdateVolumeList ) ); 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 () { #if defined(TC_UNIX) && !defined(TC_MACOSX) if (ShowRequestFifo != -1) { try { close (ShowRequestFifo); remove (string (GetShowRequestFifoPath()).c_str()); } catch (...) { } } @@ -438,70 +439,76 @@ namespace VeraCrypt static LRESULT CALLBACK MainFrameWndProcFilter (HWND hwnd, UINT message, WPARAM wParam, LPARAM lParam) { if (message == WM_DEVICECHANGE && !Core->IsDeviceChangeInProgress()) { MainFrame *frame = dynamic_cast <MainFrame *> (Gui->GetMainFrame()); PDEV_BROADCAST_HDR hdr = (PDEV_BROADCAST_HDR) lParam; if (wParam == DBT_DEVICEREMOVECOMPLETE && hdr->dbch_devicetype == DBT_DEVTYP_VOLUME) { PDEV_BROADCAST_VOLUME vol = (PDEV_BROADCAST_VOLUME) lParam; for (wchar_t driveNo = 0; driveNo < 26; ++driveNo) { if (vol->dbcv_unitmask & (1 << driveNo)) frame->OnDeviceChange (wstring (StringFormatter (L"{0}:\\", wchar_t (L'A' + driveNo)))); } } else { frame->OnDeviceChange (); } } return CallWindowProc (MainFrameWndProc, hwnd, message, wParam, lParam); } #endif void MainFrame::InitMessageFilter () { #ifdef TC_WINDOWS HWND mainFrameHwnd = static_cast <HWND> (GetHandle()); MainFrameWndProc = (WNDPROC) GetWindowLongPtr (mainFrameHwnd, GWL_WNDPROC); SetWindowLongPtr (mainFrameHwnd, GWL_WNDPROC, (LONG_PTR) MainFrameWndProcFilter); #endif } + + void MainFrame::InitWindowPrivacy () + { + Gui->SetContentProtection(!CmdLine->ArgAllowScreencapture); + } + void MainFrame::InitPreferences () { try { LoadPreferences(); VolumeSlotNumber lastSelectedSlotNumber = GetPreferences().LastSelectedSlotNumber; if (Core->IsSlotNumberValid (lastSelectedSlotNumber)) { long slotIndex = SlotNumberToItemIndex (lastSelectedSlotNumber); if (slotIndex >= 0) { SlotListCtrl->SetItemState (slotIndex, wxLIST_STATE_SELECTED, wxLIST_STATE_SELECTED); SlotListCtrl->EnsureVisible (slotIndex); } } LoadFavoriteVolumes(); VolumeHistory::Load(); if (VolumePathComboBox->GetValue().empty() && !VolumeHistory::Get().empty()) SetVolumePath (VolumeHistory::Get().front()); } catch (exception &e) { Gui->ShowError (e); Gui->ShowError (LangString["LINUX_ERROR_LOADING_CONFIG"] + wstring (Application::GetConfigFilePath (L""))); } } void MainFrame::InitTaskBarIcon () { class TaskBarIcon : public wxTaskBarIcon { public: |