]> git.sesse.net Git - vlc/commitdiff
* all: the "visible" attribute for windows (in the XML) now
authorCyril Deguet <asmax@videolan.org>
Sat, 22 Oct 2005 11:57:29 +0000 (11:57 +0000)
committerCyril Deguet <asmax@videolan.org>
Sat, 22 Oct 2005 11:57:29 +0000 (11:57 +0000)
  does what it should (if set to "false", the window is hidden
  when the theme is loaded for the first time)

modules/gui/skins2/parser/builder.cpp
modules/gui/skins2/src/theme.cpp
modules/gui/skins2/src/theme_loader.cpp
modules/gui/skins2/src/top_window.cpp
modules/gui/skins2/src/top_window.hpp
modules/gui/skins2/src/window_manager.cpp
modules/gui/skins2/src/window_manager.hpp

index c8a68e33f8bd11cd8ccdfafa0030cce38f8d1e6f..0ace39ddd40823dd8265541b8851e240e76741bc 100644 (file)
@@ -186,8 +186,9 @@ void Builder::addWindow( const BuilderData::Window &rData )
 {
     TopWindow *pWin =
         new TopWindow( getIntf(), rData.m_xPos, rData.m_yPos,
-                           m_pTheme->getWindowManager(),
-                           rData.m_dragDrop, rData.m_playOnDrop );
+                       m_pTheme->getWindowManager(),
+                       rData.m_dragDrop, rData.m_playOnDrop,
+                       rData.m_visible );
 
     m_pTheme->m_windows[rData.m_id] = TopWindowPtr( pWin );
 }
index 69f89cbdc46012f33548f2a3e20981cf604a349b..bcfef87db483d02c716867b4706c5c024985f3e2 100644 (file)
@@ -51,7 +51,7 @@ void Theme::loadConfig()
     if( !strcmp( save, "" ) )
     {
         // Show the windows
-        m_windowManager.showAll();
+        m_windowManager.showAll( true );
         return;
     }
 
index 9242c416360bd54bf4a290f695e6efdf19bd7472..90fda91ad06a4393c8db5bfd531ddf55cca52f92 100644 (file)
@@ -98,7 +98,7 @@ bool ThemeLoader::load( const string &fileName )
     {
         config_PutPsz( getIntf(), "skins2-last", fileName.c_str() );
         // Show the windows
-        pNewTheme->getWindowManager().showAll();
+        pNewTheme->getWindowManager().showAll( true );
     }
     if( skin_last ) free( skin_last );
 
index b4ca1afea215c5cb9b9853f2e9606df6b69c15ca..d5a559ba1fa22d841f5a4175107ebf4a6f545ed3 100644 (file)
 
 TopWindow::TopWindow( intf_thread_t *pIntf, int left, int top,
                       WindowManager &rWindowManager,
-                      bool dragDrop, bool playOnDrop ):
-    GenericWindow( pIntf, left, top, dragDrop, playOnDrop,
-                   NULL),
-    m_rWindowManager( rWindowManager ), m_pActiveLayout( NULL ),
-    m_pLastHitControl( NULL ), m_pCapturingControl( NULL ),
-    m_pFocusControl( NULL ), m_currModifier( 0 )
+                      bool dragDrop, bool playOnDrop, bool visible ):
+    GenericWindow( pIntf, left, top, dragDrop, playOnDrop, NULL ),
+    m_visible( visible ), m_rWindowManager( rWindowManager ),
+    m_pActiveLayout( NULL ), m_pLastHitControl( NULL ),
+    m_pCapturingControl( NULL ), m_pFocusControl( NULL ), m_currModifier( 0 )
 {
     // Register as a moving window
     m_rWindowManager.registerWindow( *this );
index ea698eaf7ebc66699d5004c2d47fe8dbe87884f0..f7596119af3f5661ed68394e30e7a35c28eb3a1e 100644 (file)
@@ -44,7 +44,7 @@ class TopWindow: public GenericWindow
     public:
         TopWindow( intf_thread_t *pIntf, int xPos, int yPos,
                    WindowManager &rWindowManager,
-                   bool dragDrop, bool playOnDrop );
+                   bool dragDrop, bool playOnDrop, bool visible );
         virtual ~TopWindow();
 
         /// Methods to process OS events.
@@ -77,6 +77,9 @@ class TopWindow: public GenericWindow
         /// Called by a control when its tooltip changed
         virtual void onTooltipChange( const CtrlGeneric &rCtrl );
 
+        /// Get the initial visibility status
+        bool isVisible() const { return m_visible; }
+
     protected:
         /// Actually show the window
         virtual void innerShow();
@@ -85,6 +88,8 @@ class TopWindow: public GenericWindow
         /// Change the active layout
         virtual void setActiveLayout( GenericLayout *pLayout );
 
+        /// Initial visibility status
+        bool m_visible;
         /// Window manager
         WindowManager &m_rWindowManager;
         /// Current active layout of the window
index b0e7a79660d8a2db93967713055d8595a0fcd528..0ebb82468a6f54c76d0d3433e3cd6b4e6ed2aced 100644 (file)
@@ -195,13 +195,18 @@ void WindowManager::raiseAll() const
 }
 
 
-void WindowManager::showAll() const
+void WindowManager::showAll( bool firstTime ) const
 {
     // Show all the windows
     WinSet_t::const_iterator it;
     for( it = m_allWindows.begin(); it != m_allWindows.end(); it++ )
     {
-        (*it)->show();
+        // When the theme is opened for the first time,
+        // only show the window if set as visible in the XML
+        if ((*it)->isVisible() || !firstTime)
+        {
+            (*it)->show();
+        }
         (*it)->setOpacity( m_alpha );
     }
 }
index 12981c1166156947cdc45bc9e5a653ec06f7b61f..6dd052604213659e1f3c155e2492a98cee84b857 100644 (file)
@@ -71,7 +71,7 @@ class WindowManager: public SkinObject
         void raiseAll() const;
 
         /// Show all the registered windows
-        void showAll() const;
+        void showAll(bool firstTime = false) const;
 
         /// Hide all the registered windows
         void hideAll() const;