wxWindow *p_child_window;
+ vlc_bool_t b_remember_size;
+ wxSize video_size;
+
void UpdateSize( wxSizeEvent & );
void UpdateHide( wxSizeEvent & );
void OnControlEvent( wxCommandEvent & );
-
+ void OnSizeEvent( wxSizeEvent& );
DECLARE_EVENT_TABLE();
};
BEGIN_EVENT_TABLE(VideoWindow, wxWindow)
EVT_CUSTOM( wxEVT_SIZE, UpdateSize_Event, VideoWindow::UpdateSize )
EVT_CUSTOM( wxEVT_SIZE, UpdateHide_Event, VideoWindow::UpdateHide )
+ EVT_SIZE( VideoWindow::OnSizeEvent )
EVT_COMMAND( SetStayOnTop_Event, wxEVT_VLC_VIDEO,
VideoWindow::OnControlEvent )
END_EVENT_TABLE()
p_intf->p_sys->p_video_sizer = new wxBoxSizer( wxHORIZONTAL );
p_intf->p_sys->p_video_sizer->Add( this, 1, wxEXPAND );
+ b_remember_size = VLC_FALSE;
ReleaseWindow( NULL );
+
+ b_remember_size = config_GetInt( p_intf, "wxwin-keep-size" );
}
VideoWindow::~VideoWindow()
p_vout = _p_vout;
+ /* Force old size */
+ if( b_remember_size &&
+ video_size.GetWidth() && video_size.GetHeight() )
+ {
+ *pi_width_hint = video_size.GetWidth();
+ *pi_height_hint = video_size.GetHeight();
+ }
+
wxSizeEvent event( wxSize(*pi_width_hint, *pi_height_hint),
UpdateSize_Event );
AddPendingEvent( event );
p_vout = NULL;
+ if( b_remember_size ) video_size = GetClientSize();
+
#if defined(__WXGTK__) || defined(WIN32)
wxSizeEvent event( wxSize(0, 0), UpdateHide_Event );
AddPendingEvent( event );
p_intf->p_sys->p_video_sizer->Layout();
SetFocus();
}
+
p_intf->p_sys->p_video_sizer->SetMinSize( event.GetSize() );
wxCommandEvent intf_event( wxEVT_INTF, 0 );
}
}
+void VideoWindow::OnSizeEvent( wxSizeEvent &event )
+{
+ /* Ignore if no vout */
+ if( p_vout )
+ p_intf->p_sys->p_video_sizer->SetMinSize( event.GetSize() );
+
+ if( b_remember_size )
+ video_size = GetClientSize();
+
+ event.Skip();
+}
+
static int ControlWindow( intf_thread_t *p_intf, void *p_window,
int i_query, va_list args )
{
#define EMBED_TEXT N_("Embed video in interface")
#define EMBED_LONGTEXT N_("Embed the video inside the interface instead " \
"of having it in a separate window.")
+#define KEEP_SIZE_TEXT N_("Remember the size of the embedded video")
+#define KEEP_SIZE_LONGTEXT N_("Remember the size of the last embedded " \
+ "video and apply it to new videos. The default behaviour is to adjust " \
+ "the size of the embedded video to match the resolution of the video.")
#define BOOKMARKS_TEXT N_("Show bookmarks dialog")
#define BOOKMARKS_LONGTEXT N_("Show bookmarks dialog when the interface " \
"starts.")
add_bool( "wxwin-embed", 1, NULL,
EMBED_TEXT, EMBED_LONGTEXT, VLC_FALSE );
+ add_bool( "wxwin-keep-size", 0, NULL,
+ KEEP_SIZE_TEXT, KEEP_SIZE_LONGTEXT, VLC_FALSE );
add_bool( "wxwin-bookmarks", 0, NULL,
BOOKMARKS_TEXT, BOOKMARKS_LONGTEXT, VLC_FALSE );