create a sizing callback for the preview panel specifically, apparently on macos the window size isn't guaranteed to be the size it's set to in the main window size handler

This commit is contained in:
jp9000 2013-12-31 07:10:47 -07:00
parent c71eb041b6
commit 1302e65ee6
6 changed files with 18 additions and 5 deletions

View File

@ -425,7 +425,7 @@ bool obs_enum_output_types(size_t idx, const char **id)
graphics_t obs_graphics(void)
{
return obs->video.graphics;
return (obs != NULL) ? obs->video.graphics : NULL;
}
media_t obs_media(void)

View File

@ -240,6 +240,7 @@ OBSBasicBase::OBSBasicBase( wxWindow* parent, wxWindowID id, const wxString& tit
this->Connect( fileOpenMenu->GetId(), wxEVT_COMMAND_MENU_SELECTED, wxCommandEventHandler( OBSBasicBase::fileOpenClicked ) );
this->Connect( fileSaveMenu->GetId(), wxEVT_COMMAND_MENU_SELECTED, wxCommandEventHandler( OBSBasicBase::fileSaveClicked ) );
this->Connect( fileExitMenu->GetId(), wxEVT_COMMAND_MENU_SELECTED, wxCommandEventHandler( OBSBasicBase::fileExitClicked ) );
previewPanel->Connect( wxEVT_SIZE, wxSizeEventHandler( OBSBasicBase::OnResizePreview ), NULL, this );
scenes->Connect( wxEVT_COMMAND_LISTBOX_SELECTED, wxCommandEventHandler( OBSBasicBase::scenesClicked ), NULL, this );
scenes->Connect( wxEVT_RIGHT_DOWN, wxMouseEventHandler( OBSBasicBase::scenesRDown ), NULL, this );
this->Connect( ID_SCENE_ADD, wxEVT_COMMAND_TOOL_CLICKED, wxCommandEventHandler( OBSBasicBase::sceneAddClicked ) );
@ -271,6 +272,7 @@ OBSBasicBase::~OBSBasicBase()
this->Disconnect( IF_FILE_OPEN, wxEVT_COMMAND_MENU_SELECTED, wxCommandEventHandler( OBSBasicBase::fileOpenClicked ) );
this->Disconnect( IF_FILE_SAVE, wxEVT_COMMAND_MENU_SELECTED, wxCommandEventHandler( OBSBasicBase::fileSaveClicked ) );
this->Disconnect( ID_FILE_EXIT, wxEVT_COMMAND_MENU_SELECTED, wxCommandEventHandler( OBSBasicBase::fileExitClicked ) );
previewPanel->Disconnect( wxEVT_SIZE, wxSizeEventHandler( OBSBasicBase::OnResizePreview ), NULL, this );
scenes->Disconnect( wxEVT_COMMAND_LISTBOX_SELECTED, wxCommandEventHandler( OBSBasicBase::scenesClicked ), NULL, this );
scenes->Disconnect( wxEVT_RIGHT_DOWN, wxMouseEventHandler( OBSBasicBase::scenesRDown ), NULL, this );
this->Disconnect( ID_SCENE_ADD, wxEVT_COMMAND_TOOL_CLICKED, wxCommandEventHandler( OBSBasicBase::sceneAddClicked ) );

View File

@ -394,7 +394,7 @@
<event name="OnRightDown"></event>
<event name="OnRightUp"></event>
<event name="OnSetFocus"></event>
<event name="OnSize"></event>
<event name="OnSize">OnResizePreview</event>
<event name="OnUpdateUI"></event>
</object>
</object>

View File

@ -139,6 +139,7 @@ class OBSBasicBase : public WindowSubclass
virtual void fileOpenClicked( wxCommandEvent& event ) { event.Skip(); }
virtual void fileSaveClicked( wxCommandEvent& event ) { event.Skip(); }
virtual void fileExitClicked( wxCommandEvent& event ) { event.Skip(); }
virtual void OnResizePreview( wxSizeEvent& event ) { event.Skip(); }
virtual void scenesClicked( wxCommandEvent& event ) { event.Skip(); }
virtual void scenesRDown( wxMouseEvent& event ) { event.Skip(); }
virtual void sceneAddClicked( wxCommandEvent& event ) { event.Skip(); }

View File

@ -185,11 +185,20 @@ void OBSBasic::OnSize(wxSizeEvent &event)
return;
ResizePreview(ovi.base_width, ovi.base_height);
}
void OBSBasic::OnResizePreview(wxSizeEvent &event)
{
event.Skip();
wxSize newSize = previewPanel->GetMinSize();
gs_entercontext(obs_graphics());
gs_resize(newSize.x, newSize.y);
gs_leavecontext();
graphics_t graphics = obs_graphics();
if (graphics) {
gs_entercontext(graphics);
gs_resize(newSize.x, newSize.y);
gs_leavecontext();
}
}
void OBSBasic::fileNewClicked(wxCommandEvent &event)

View File

@ -43,6 +43,7 @@ protected:
virtual void OnClose(wxCloseEvent &event);
virtual void OnMinimize(wxIconizeEvent &event);
virtual void OnSize(wxSizeEvent &event);
virtual void OnResizePreview(wxSizeEvent &event);
virtual void fileNewClicked(wxCommandEvent &event);
virtual void fileOpenClicked(wxCommandEvent &event);
virtual void fileSaveClicked(wxCommandEvent &event);