From 68de84b427bfa6830c13c70d5ab100ec76b40932 Mon Sep 17 00:00:00 2001 From: Thomas Goyne Date: Sun, 11 Oct 2009 22:10:08 +0000 Subject: [PATCH] Fix some minor quirks with detached video and the display mode. Originally committed to SVN as r3688. --- aegisub/src/dialog_detached_video.cpp | 4 +- aegisub/src/frame_main.cpp | 54 ++++++++++++--------------- aegisub/src/frame_main_events.cpp | 19 ++++------ 3 files changed, 33 insertions(+), 44 deletions(-) diff --git a/aegisub/src/dialog_detached_video.cpp b/aegisub/src/dialog_detached_video.cpp index eaf33fbfb..423415dcd 100644 --- a/aegisub/src/dialog_detached_video.cpp +++ b/aegisub/src/dialog_detached_video.cpp @@ -91,7 +91,7 @@ DialogDetachedVideo::DialogDetachedVideo(FrameMain *par, const wxSize &initialDi SetMinSize(wxSize(1,1)); // Update - parent->SetDisplayMode(0,-1); + parent->SetDisplayMode(0, -1); Options.SetBool(_T("Detached video"),true); Options.Save(); @@ -119,7 +119,7 @@ void DialogDetachedVideo::OnClose(wxCloseEvent &WXUNUSED(event)) { Options.SetBool(_T("Detached video"),false); Destroy(); par->detachedVideo = NULL; - par->SetDisplayMode(-1,-1); + par->SetDisplayMode(1,-1); } /// @brief Move window diff --git a/aegisub/src/frame_main.cpp b/aegisub/src/frame_main.cpp index fa8e855e8..6e5a8578f 100644 --- a/aegisub/src/frame_main.cpp +++ b/aegisub/src/frame_main.cpp @@ -867,27 +867,25 @@ int FrameMain::TryToCloseSubs(bool enableCancel) { -/// @brief Set display mode -/// @param _showVid -/// @param _showAudio -/// @return -/// -void FrameMain::SetDisplayMode(int _showVid,int _showAudio) { - // Shown? - static bool firstRun = true; - if (!IsShownOnScreen() && !firstRun) return; - firstRun = false; +/// @brief Set the video and audio display visibilty +/// @param video -1: leave unchanged; 0: hide; 1: show +/// @param audio -1: leave unchanged; 0: hide; 1: show +void FrameMain::SetDisplayMode(int video, int audio) { + if (!IsShownOnScreen()) return; - // Automatic - if (_showVid == -1) _showVid = (VideoContext::Get()->IsLoaded() && !detachedVideo) ? 1 : 0; - else if (_showVid == -2) _showVid = showVideo?1:0; - if (_showAudio == -1) _showAudio = audioBox->loaded ? 1 : 0; - else if (_showAudio == -2) _showAudio = showAudio?1:0; + bool sv = false, sa = false; + + if (video == -1) sv = showVideo; + else if (video) sv = VideoContext::Get()->IsLoaded() && !detachedVideo; + + if (audio == -1) sa = showAudio; + else if (audio) sa = audioBox->loaded; // See if anything changed - if (_showVid == (showVideo?1:0) && _showAudio == (showAudio?1:0)) return; - showAudio = _showAudio == 1; - showVideo = _showVid == 1; + if (sv == showVideo && sa == showAudio) return; + + showVideo = sv; + showAudio = sa; // Stop Freeze(); @@ -902,7 +900,6 @@ void FrameMain::SetDisplayMode(int _showVid,int _showAudio) { EditBox->SetSplitLineMode(); MainSizer->CalcMin(); MainSizer->RecalcSizes(); - //videoBox->VideoSizer->Layout(); MainSizer->Layout(); Layout(); Show(true); @@ -1072,7 +1069,7 @@ void FrameMain::SynchronizeProject(bool fromSubs) { } // Display - SetDisplayMode(-1,-1); + SetDisplayMode(1,1); } // Store data on subs @@ -1163,9 +1160,7 @@ void FrameMain::LoadVideo(wxString file,bool autoload) { VFR_Output.Unload(); } } - SetDisplayMode(1,-1); VideoContext::Get()->SetVideo(file); - SetDisplayMode(0,-1); } catch (const wchar_t *error) { wxString err(error); @@ -1203,7 +1198,7 @@ void FrameMain::LoadVideo(wxString file,bool autoload) { } SubsBox->CommitChanges(true); - SetDisplayMode(-1,-1); + SetDisplayMode(1,-1); EditBox->UpdateFrameTiming(); DetachVideo(VideoContext::Get()->IsLoaded() && Options.AsBool(_T("Detached Video"))); @@ -1222,7 +1217,7 @@ void FrameMain::LoadAudio(wxString filename,bool FromVideo) { VideoContext::Get()->Stop(); try { audioBox->SetFile(filename,FromVideo); - SetDisplayMode(-1,-1); + SetDisplayMode(-1,1); } catch (const wchar_t *error) { wxString err(error); @@ -1295,7 +1290,6 @@ void FrameMain::OpenHelp(wxString page) { /// @brief Detach video window /// @param detach -/// void FrameMain::DetachVideo(bool detach) { if (detach) { if (!detachedVideo) { @@ -1303,12 +1297,10 @@ void FrameMain::DetachVideo(bool detach) { detachedVideo->Show(); } } - else { - if (detachedVideo) { - detachedVideo->Destroy(); - SetDisplayMode(-1,-1); - detachedVideo = NULL; - } + else if (detachedVideo) { + detachedVideo->Destroy(); + detachedVideo = NULL; + SetDisplayMode(1,-1); } UpdateToolbar(); } diff --git a/aegisub/src/frame_main_events.cpp b/aegisub/src/frame_main_events.cpp index 84143d598..3b3a71f18 100644 --- a/aegisub/src/frame_main_events.cpp +++ b/aegisub/src/frame_main_events.cpp @@ -295,7 +295,7 @@ void FrameMain::OnMenuOpen (wxMenuEvent &event) { else if (curMenu == viewMenu) { // Flags bool aud = audioBox->audioDisplay->loaded; - bool vid = VideoContext::Get()->IsLoaded(); + bool vid = VideoContext::Get()->IsLoaded() && !detachedVideo; // Set states MenuBar->Enable(Menu_View_Audio,aud); @@ -329,7 +329,7 @@ void FrameMain::OnMenuOpen (wxMenuEvent &event) { MenuBar->Enable(Menu_Video_AR_Wide,attached); MenuBar->Enable(Menu_Video_AR_235,attached); MenuBar->Enable(Menu_Video_AR_Custom,attached); - MenuBar->Enable(Menu_Video_Detach,state && !detachedVideo); + MenuBar->Enable(Menu_Video_Detach,state); MenuBar->Enable(Menu_File_Save_VFR,VFR_Output.GetFrameRateType() == VFR); MenuBar->Enable(Menu_File_Close_VFR,VFR_Output.GetFrameRateType() == VFR); MenuBar->Enable(Menu_Video_Close_Keyframes,VideoContext::Get()->OverKeyFramesLoaded()); @@ -1016,7 +1016,7 @@ void FrameMain::OnSetZoom(wxCommandEvent &event) { /// @param event /// void FrameMain::OnDetachVideo(wxCommandEvent &event) { - DetachVideo(); + DetachVideo(!detachedVideo); } @@ -1505,7 +1505,7 @@ void FrameMain::OnReplace(wxCommandEvent &event) { void FrameMain::OnSetARDefault (wxCommandEvent &event) { VideoContext::Get()->Stop(); VideoContext::Get()->SetAspectRatio(0); - SetDisplayMode(-1,-2); + SetDisplayMode(1,-1); } @@ -1516,7 +1516,7 @@ void FrameMain::OnSetARDefault (wxCommandEvent &event) { void FrameMain::OnSetARFull (wxCommandEvent &event) { VideoContext::Get()->Stop(); VideoContext::Get()->SetAspectRatio(1); - SetDisplayMode(-1,-2); + SetDisplayMode(1,-1); } @@ -1527,7 +1527,7 @@ void FrameMain::OnSetARFull (wxCommandEvent &event) { void FrameMain::OnSetARWide (wxCommandEvent &event) { VideoContext::Get()->Stop(); VideoContext::Get()->SetAspectRatio(2); - SetDisplayMode(-1,-2); + SetDisplayMode(1,-1); } @@ -1538,7 +1538,7 @@ void FrameMain::OnSetARWide (wxCommandEvent &event) { void FrameMain::OnSetAR235 (wxCommandEvent &event) { VideoContext::Get()->Stop(); VideoContext::Get()->SetAspectRatio(3); - SetDisplayMode(-1,-2); + SetDisplayMode(1,-1); } @@ -1591,7 +1591,7 @@ void FrameMain::OnSetARCustom (wxCommandEvent &event) { // Set value else { VideoContext::Get()->SetAspectRatio(4,numval); - SetDisplayMode(-1,-1); + SetDisplayMode(1,-1); } } @@ -1953,7 +1953,6 @@ void FrameMain::OnPickAssociations(wxCommandEvent &event) { /// @return /// void FrameMain::OnViewStandard (wxCommandEvent &event) { - if (!audioBox->audioDisplay->loaded || !VideoContext::Get()->IsLoaded()) return; SetDisplayMode(1,1); } @@ -1964,7 +1963,6 @@ void FrameMain::OnViewStandard (wxCommandEvent &event) { /// @return /// void FrameMain::OnViewVideo (wxCommandEvent &event) { - if (!VideoContext::Get()->IsLoaded()) return; SetDisplayMode(1,0); } @@ -1975,7 +1973,6 @@ void FrameMain::OnViewVideo (wxCommandEvent &event) { /// @return /// void FrameMain::OnViewAudio (wxCommandEvent &event) { - if (!audioBox->audioDisplay->loaded) return; SetDisplayMode(0,1); }