From 85374daa9474beb7f659c7fb9aab78eed5ff1fcd Mon Sep 17 00:00:00 2001 From: jp9000 Date: Fri, 6 Dec 2013 06:39:19 -0700 Subject: [PATCH] made it so that preview panel scales based upon window size --- obs/window-obs-basic.cpp | 27 +++++++++++++++++++++++++++ obs/window-obs-basic.hpp | 5 ++++- 2 files changed, 31 insertions(+), 1 deletion(-) 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;} };