]> git.sesse.net Git - vlc/commitdiff
Fix hidding of fullscreen controller after leaving fullscreen
authorLukas Durfina <lukas.durfina@gmail.com>
Wed, 25 Jun 2008 12:25:44 +0000 (14:25 +0200)
committerJean-Baptiste Kempf <jb@videolan.org>
Thu, 26 Jun 2008 05:04:23 +0000 (22:04 -0700)
Signed-off-by: Jean-Baptiste Kempf <jb@videolan.org>
modules/gui/qt4/components/interface_widgets.cpp
modules/gui/qt4/components/interface_widgets.hpp

index 710cc55a7216be2bfdb815d055d0d4080d538bac..1e0d3494ad412d9dfa14b6381bbfcae0bee21aa2 100644 (file)
@@ -878,7 +878,7 @@ FullscreenControllerWidget::FullscreenControllerWidget( intf_thread_t *_p_i,
         MainInterface *_p_mi, bool b_advControls, bool b_shiny )
         : ControlsWidget( _p_i, _p_mi, b_advControls, b_shiny, true ),
         i_lastPosX( -1 ), i_lastPosY( -1 ), i_hideTimeout( 1 ),
-        b_mouseIsOver( false )
+        b_mouseIsOver( false ), b_isFullscreen( false )
 {
     setWindowFlags( Qt::ToolTip );
 
@@ -976,7 +976,11 @@ void FullscreenControllerWidget::slowHideFSC()
     }
     else
     {
+#ifdef WIN32TRICK
+         if ( windowOpacity() > 0.0 && !fscHidden )
+#else
          if ( windowOpacity() > 0.0 )
+#endif
          {
              /* we should use 0.01 because of 100 pieces ^^^
                 but than it cannt be done in time */
@@ -1013,7 +1017,7 @@ void FullscreenControllerWidget::customEvent( QEvent *event )
 {
     int type = event->type();
 
-    if ( type == FullscreenControlShow_Type )
+    if ( type == FullscreenControlShow_Type && b_isFullscreen )
     {
         #ifdef WIN32TRICK
         // after quiting and going to fs, we need to call show()
@@ -1150,7 +1154,8 @@ static int regMouseMoveCallback( vlc_object_t *vlc_object, const char *variable,
 
     if ( var_GetBool( p_vout, "fullscreen" ) && !b_registered )
     {
-        p_fs->SetHideTimeout( var_GetInteger( p_vout, "mouse-hide-timeout" ) );
+        p_fs->setHideTimeout( var_GetInteger( p_vout, "mouse-hide-timeout" ) );
+        p_fs->setIsFullscreen( true );
         var_AddCallback( p_vout, "mouse-moved",
                         showFullscreenControllCallback, (void *) p_fs );
         b_registered = true;
@@ -1158,14 +1163,13 @@ static int regMouseMoveCallback( vlc_object_t *vlc_object, const char *variable,
 
     if ( !var_GetBool( p_vout, "fullscreen" ) && b_registered )
     {
+        p_fs->setIsFullscreen( false );
+        p_fs->hide();
         var_DelCallback( p_vout, "mouse-moved",
                         showFullscreenControllCallback, (void *) p_fs );
         b_registered = false;
     }
 
-    if ( !var_GetBool( p_vout, "fullscreen" ) )
-        p_fs->hide();
-
     return VLC_SUCCESS;
 }
 
index ccd09535e9b1c341cf0582c889b6873cedc44a99..c1071d6aa1dd90e9cbc2989b93c75bbeb4ef9616 100644 (file)
@@ -250,7 +250,8 @@ public:
     FullscreenControllerWidget( intf_thread_t *, MainInterface*, bool, bool );
     virtual ~FullscreenControllerWidget();
 
-    void SetHideTimeout( int hideTimeout ) { i_hideTimeout = hideTimeout; }
+    void setHideTimeout( int hideTimeout ) { i_hideTimeout = hideTimeout; }
+    void setIsFullscreen( bool isFS ) { b_isFullscreen = isFS; }
     void regFullscreenCallback( vout_thread_t *p_vout );
 
     bool isFSCHidden();
@@ -283,6 +284,7 @@ private:
     int i_lastPosY;
     int i_hideTimeout;  /* FSC hiding timeout, same as mouse hiding timeout */
     bool b_mouseIsOver;
+    bool b_isFullscreen;
 
 #ifdef WIN32TRICK
     bool fscHidden;