i_old_playing_status = STATUS_STOP;
i_old_rate = INPUT_RATE_DEFAULT;
b_slider_free = VLC_TRUE;
+ i_input_hide_delay = 0;
/* Create slider */
slider = new wxSlider( this, SliderScroll_Event, 0, 0, SLIDER_MAX_POS );
{
slider->SetValue( 0 );
}
- else
+ else if( !i_input_hide_delay )
+ {
+ i_input_hide_delay = mdate() + 200000;
+ }
+ else if( i_input_hide_delay < mdate() )
{
if( disc_frame->IsShown() ) HideDiscFrame();
if( slider->IsShown() ) HideSlider();
+ i_input_hide_delay = 0;
}
}
else if( p_input->b_dead )
vlc_object_release( p_input );
p_input = NULL;
}
+ else
+ {
+ i_input_hide_delay = 0;
+ }
if( p_input && !p_input->b_die )
{
{
if( !!show == !!slider->IsShown() ) return;
- if( p_intf->p_sys->b_video_autosize )
- UpdateVideoWindow( p_intf, p_main_intf->video_window );
+ UpdateVideoWindow( p_intf, p_main_intf->video_window );
sizer->Show( slider, show );
sizer->Layout();
{
if( !!show == !!disc_frame->IsShown() ) return;
- if( p_intf->p_sys->b_video_autosize )
- UpdateVideoWindow( p_intf, p_main_intf->video_window );
+ UpdateVideoWindow( p_intf, p_main_intf->video_window );
sizer->Show( disc_frame, show );
sizer->Layout();
int i_old_playing_status; ///< Previous playing status
int i_old_rate; ///< Previous playing rate
+ mtime_t i_input_hide_delay; ///< Allows delaying slider hidding
};
};
/* Create a main panel that will fill in the interface window */
main_sizer = new wxBoxSizer( wxVERTICAL );
SetSizer( main_sizer );
- main_panel = new wxPanel( this );
+ main_panel = new wxPanel( this, -1, wxDefaultPosition, wxDefaultSize,
+ wxCLIP_CHILDREN );
main_sizer->Add( main_panel, 1, wxEXPAND );
main_panel->SetFocus();
statusbar->SetStatusWidths( 3, i_status_width );
statusbar->SetStatusText( wxString::Format(wxT("x%.2f"), 1.0), 1 );
+ /* Get minimum window size to prevent user from glitching it */
+ panel_sizer->Layout(); panel_sizer->Fit( main_panel );
+ main_sizer->Layout(); main_sizer->Fit( this );
+ main_min_size = GetSize();
+
/* Video window */
video_window = 0;
if( config_GetInt( p_intf, "wx-embed" ) )
panel_sizer->Add( input_manager, 0, wxEXPAND , 0 );
/* Layout everything */
- panel_sizer->Layout();
- panel_sizer->Fit( main_panel );
- main_sizer->Layout();
- main_sizer->Fit( this );
+ panel_sizer->Layout(); panel_sizer->Fit( main_panel );
+ main_sizer->Layout(); main_sizer->Fit( this );
#if wxUSE_DRAG_AND_DROP
/* Associate drop targets with the main interface */
if( ws->GetSettings( WindowSettings::ID_MAIN, b_shown, p, s ) ) Move( p );
- /* Get minimum window size to prevent user from glitching it */
- s = GetSize();
- if( video_window && video_window->IsShown() )
- s.SetHeight( s.GetHeight() - video_window->GetSize().GetHeight() );
- main_min_size = s;
-
/* Show extended GUI if requested */
wxCommandEvent dummy;
if( config_GetInt( p_intf, "wx-extended" ) ) OnExtended( dummy );
switch( event.GetId() )
{
case 0:
- if( p_intf->p_sys->b_video_autosize )
- {
- main_sizer->Layout();
- main_sizer->Fit(this);
- }
+ main_sizer->Layout();
+ main_sizer->Fit( this );
break;
case 1:
ms.SetWidth( ext_min_size.GetWidth() );
}
-#if ( wxCHECK_VERSION( 2,5,4 ) )
- SetMinSize( ms );
-#else
- main_sizer->SetMinSize( ms );
-#endif
+ SetSizeHints( ms );
}
/*****************************************************************************
void Interface::OnExtended( wxCommandEvent& WXUNUSED(event) )
{
+ UpdateVideoWindow( p_intf, video_window );
+
if( !extra_frame )
{
/* Create the extra panel */
}
b_extra = !b_extra;
-
panel_sizer->Show( extra_frame, b_extra );
SetIntfMinSize();
}
GetToolBar()->Realize();
+
+#if defined( __WXMSW__ )
+ /* Needed to work around a bug in wxToolBar::Realize() */
+ GetToolBar()->SetSize( GetSize().GetWidth(),
+ GetToolBar()->GetSize().GetHeight() );
+ GetToolBar()->Update();
+#endif
+
GetToolBar()->ToggleTool( PlayStream_Event, true );
GetToolBar()->ToggleTool( PlayStream_Event, false );
}
void UpdateVideoWindow( intf_thread_t *p_intf, wxWindow *p_window )
{
-#if (wxCHECK_VERSION(2,5,0))
+#if (wxCHECK_VERSION(2,5,3))
+ if( !p_intf->p_sys->b_video_autosize ) return;
+
if( p_window && mdate() - ((VideoWindow *)p_window)->i_creation_date < 2000000 )
return; /* Hack to prevent saving coordinates if window is not yet
* properly created. Yuck :( */
* Constructor.
*****************************************************************************/
VideoWindow::VideoWindow( intf_thread_t *_p_intf, wxWindow *_p_parent ):
- wxWindow( _p_parent, -1 )
+ wxWindow( _p_parent, -1, wxDefaultPosition, wxDefaultSize, wxCLIP_CHILDREN )
{
/* Initializations */
p_intf = _p_intf;
p_parent = _p_parent;
+ p_child_window = 0;
vlc_mutex_init( p_intf, &lock );
- b_auto_size = config_GetInt( p_intf, "wx-autosize" );
+ b_auto_size = p_intf->p_sys->b_video_autosize;
p_vout = NULL;
i_creation_date = 0;
SetSize( child_size );
}
- p_child_window = new wxWindow( this, -1, wxDefaultPosition, child_size );
+#ifdef __WXGTK__
+ p_child_window = new wxWindow( this, -1, wxDefaultPosition, child_size,
+ wxCLIP_CHILDREN );
+#endif
if( !b_auto_size )
{
SetBackgroundColour( *wxBLACK );
- p_child_window->SetBackgroundColour( *wxBLACK );
+ if( p_child_window ) p_child_window->SetBackgroundColour( *wxBLACK );
}
- p_child_window->Show();
+ if( p_child_window ) p_child_window->Show();
Show();
b_shown = VLC_TRUE;
unsigned int *pi_width = va_arg( args, unsigned int * );
unsigned int *pi_height = va_arg( args, unsigned int * );
- *pi_width = GetSize().GetWidth();
- *pi_height = GetSize().GetHeight();
+ *pi_width = GetSize().GetWidth();
+ *pi_height = GetSize().GetHeight();
i_ret = VLC_SUCCESS;
}
break;