From c934307dcad522891981c338c12a0778a2ef419a Mon Sep 17 00:00:00 2001 From: =?utf8?q?Felix=20Paul=20K=C3=BChne?= Date: Sat, 25 Mar 2006 18:19:53 +0000 Subject: [PATCH] * update the info panel when switching the currently played p_item --- modules/gui/macosx/playlist.m | 4 ++++ modules/gui/macosx/playlistinfo.h | 1 + modules/gui/macosx/playlistinfo.m | 36 ++++++++++++++++++++----------- 3 files changed, 29 insertions(+), 12 deletions(-) diff --git a/modules/gui/macosx/playlist.m b/modules/gui/macosx/playlist.m index 162ebdb4db..91137e387c 100644 --- a/modules/gui/macosx/playlist.m +++ b/modules/gui/macosx/playlist.m @@ -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 diff --git a/modules/gui/macosx/playlistinfo.h b/modules/gui/macosx/playlistinfo.h index 7a87f92d6b..715169f03b 100644 --- a/modules/gui/macosx/playlistinfo.h +++ b/modules/gui/macosx/playlistinfo.h @@ -103,6 +103,7 @@ - (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; diff --git a/modules/gui/macosx/playlistinfo.m b/modules/gui/macosx/playlistinfo.m index 925addb56a..34511e5856 100644 --- a/modules/gui/macosx/playlistinfo.m +++ b/modules/gui/macosx/playlistinfo.m @@ -101,7 +101,7 @@ - (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]; @@ -149,6 +149,11 @@ [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]; } @@ -156,6 +161,23 @@ - (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; @@ -204,17 +226,7 @@ [[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 -- 2.39.5