]> git.sesse.net Git - vlc/commitdiff
* update the info panel when switching the currently played p_item
authorFelix Paul Kühne <fkuehne@videolan.org>
Sat, 25 Mar 2006 18:19:53 +0000 (18:19 +0000)
committerFelix Paul Kühne <fkuehne@videolan.org>
Sat, 25 Mar 2006 18:19:53 +0000 (18:19 +0000)
modules/gui/macosx/playlist.m
modules/gui/macosx/playlistinfo.h
modules/gui/macosx/playlistinfo.m

index 162ebdb4db5c3b979ca55a132aa211577dce0115..91137e387c697604693afa82587cc1578ca25946 100644 (file)
@@ -47,6 +47,7 @@
 #include "intf.h"
 #import "wizard.h"
 #import "bookmarks.h"
+#import "playlistinfo.h"
 #include "playlist.h"
 #include "controls.h"
 #include "vlc_osd.h"
@@ -617,6 +618,9 @@ belongs to an Apple hidden private API, and then can "disapear" at any time*/
     [o_outline_view scrollRowToVisible: i_row];
 
     vlc_object_release(p_playlist);
+
+    /* update our info-panel to reflect the new item */
+    [[[VLCMain sharedInstance] getInfo] updatePanel];
 }
 
 /* Check if p_item is a child of p_node recursively. We need to check the item
index 7a87f92d6bbbf4ffef1007397b2dd658d45086aa..715169f03ba54d5a3a09b94c23d4110a9db2fc75 100644 (file)
 - (IBAction)togglePlaylistInfoPanel:(id)sender;
 - (IBAction)toggleInfoPanel:(id)sender;
 - (void)initPanel:(id)sender;
+- (void)updatePanel;
 - (IBAction)infoCancel:(id)sender;
 - (IBAction)infoOk:(id)sender;
 - (playlist_item_t *)getItem;
index 925addb56a72c05729dc64fb86ae2d407a5c2608..34511e5856368433276cefb090eb8d545755cc66 100644 (file)
 
 - (void)dealloc
 {
-    /* make that it is released in any case */
+    /* make sure that it is released in any case */
     if ( o_statUpdateTimer )
         [o_statUpdateTimer release];
     [super dealloc];
             [o_statUpdateTimer fire];
             [o_statUpdateTimer retain];
         }
+        else
+        {
+            if( [o_tab_view numberOfTabViewItems] > 2 )
+            [o_tab_view removeTabViewItem: [o_tab_view tabViewItemAtIndex: 2]];
+        }
 
         [self initPanel:sender];
     }
 
 - (void)initPanel:(id)sender
 {
+    [self updatePanel];
+    [o_info_window makeKeyAndOrderFront: sender];
+}
+
+- (void)updatePanel
+{
+    /* make sure that we got the current item and not an outdated one */
+    intf_thread_t * p_intf = VLCIntf;
+        playlist_t * p_playlist = vlc_object_find( p_intf, VLC_OBJECT_PLAYLIST,
+                                          FIND_ANYWHERE );
+
+    if( p_playlist )
+    {
+        p_item = p_playlist->status.p_item;
+        vlc_object_release( p_playlist );
+    }
+
     /* check whether our item is valid, because we would crash if not */
     if(! [self isItemInPlaylist: p_item] ) return;
 
     [[VLCInfoTreeItem rootItem] refresh];
     [o_outline_view reloadData];
 
-    BOOL b_stats = config_GetInt(VLCIntf, "stats");
-    if(! b_stats )
-    {
-        if( [o_tab_view numberOfTabViewItems] > 2 )
-            [o_tab_view removeTabViewItem: [o_tab_view tabViewItemAtIndex: 2]];
-    }
-    else
-    {
-        [self updateStatistics: nil];
-    }
-    [o_info_window makeKeyAndOrderFront: sender];
+    /* updating the stats isn't our job, but is done by the timer if needed */
 }
 
 - (void)setMeta: (char *)meta forLabel: (id)theItem