diff --git a/obs/window-obs-basic.cpp b/obs/window-obs-basic.cpp index cc36bebce..ae34559b9 100644 --- a/obs/window-obs-basic.cpp +++ b/obs/window-obs-basic.cpp @@ -21,6 +21,33 @@ void OBSBasic::OnClose(wxCloseEvent& event) { wxGetApp().ExitMainLoop(); + event.Skip(); +} + +void OBSBasic::OnMinimize(wxIconizeEvent& event) +{ + event.Skip(); +} + +void OBSBasic::OnSize(wxSizeEvent& event) +{ + struct obs_video_info ovi; + + event.Skip(); + + if (!obs_get_video_info(&ovi)) + return; + + wxSize targetSize = GetPreviewContainer()->GetSize(); + double targetAspect = double(targetSize.x) / double(targetSize.y); + double baseAspect = double(ovi.base_width) / double(ovi.base_height); + + if (targetAspect > baseAspect) + GetPreviewPanel()->SetMinSize(wxSize(targetSize.y * baseAspect, + targetSize.y)); + else + GetPreviewPanel()->SetMinSize(wxSize(targetSize.x, + targetSize.x / baseAspect)); } void OBSBasic::file_newOnMenuSelection(wxCommandEvent& event) diff --git a/obs/window-obs-basic.hpp b/obs/window-obs-basic.hpp index 962ca8bad..2b41acbd3 100644 --- a/obs/window-obs-basic.hpp +++ b/obs/window-obs-basic.hpp @@ -22,6 +22,8 @@ class OBSBasic : public OBSBasicBase { protected: virtual void OnClose(wxCloseEvent& event); + virtual void OnMinimize(wxIconizeEvent& event); + virtual void OnSize(wxSizeEvent& event); virtual void file_newOnMenuSelection(wxCommandEvent& event); virtual void file_openOnMenuSelection(wxCommandEvent& event); virtual void file_saveOnMenuSelection(wxCommandEvent& event); @@ -42,5 +44,6 @@ protected: public: inline OBSBasic() : OBSBasicBase(NULL) {} - inline const wxPanel *GetPreviewPanel() const {return previewPanel;} + inline wxPanel *GetPreviewPanel() {return previewPanel;} + inline wxSizer *GetPreviewContainer() {return previewContainer;} };