From e214f2c24c5f178b75f33a7ee5d18e0825cbd9f1 Mon Sep 17 00:00:00 2001 From: Gildas Bazin <gbazin@videolan.org> Date: Mon, 26 Apr 2004 13:10:09 +0000 Subject: [PATCH] * modules/gui/wxwindows/*: new --wxwin-keep-size option to remember the size of the last embedded video. --- modules/gui/wxwindows/video.cpp | 32 ++++++++++++++++++++++++++++- modules/gui/wxwindows/wxwindows.cpp | 6 ++++++ 2 files changed, 37 insertions(+), 1 deletion(-) diff --git a/modules/gui/wxwindows/video.cpp b/modules/gui/wxwindows/video.cpp index 96751a5579ed..86b5451ec536 100644 --- a/modules/gui/wxwindows/video.cpp +++ b/modules/gui/wxwindows/video.cpp @@ -69,10 +69,13 @@ private: 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(); }; @@ -81,6 +84,7 @@ DEFINE_LOCAL_EVENT_TYPE( wxEVT_VLC_VIDEO ); 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() @@ -119,7 +123,10 @@ VideoWindow::VideoWindow( intf_thread_t *_p_intf, wxWindow *_p_parent ): 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() @@ -176,6 +183,14 @@ void *VideoWindow::GetWindow( vout_thread_t *_p_vout, 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 ); @@ -214,6 +229,8 @@ void VideoWindow::ReleaseWindow( void *p_window ) p_vout = NULL; + if( b_remember_size ) video_size = GetClientSize(); + #if defined(__WXGTK__) || defined(WIN32) wxSizeEvent event( wxSize(0, 0), UpdateHide_Event ); AddPendingEvent( event ); @@ -230,6 +247,7 @@ void VideoWindow::UpdateSize( wxSizeEvent &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 ); @@ -261,6 +279,18 @@ void VideoWindow::OnControlEvent( wxCommandEvent &event ) } } +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 ) { diff --git a/modules/gui/wxwindows/wxwindows.cpp b/modules/gui/wxwindows/wxwindows.cpp index 0eeb79cf53d4..2a40f4916e34 100644 --- a/modules/gui/wxwindows/wxwindows.cpp +++ b/modules/gui/wxwindows/wxwindows.cpp @@ -83,6 +83,10 @@ private: #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.") @@ -103,6 +107,8 @@ vlc_module_begin(); 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 ); -- GitLab