diff --git a/gui/tabs.cpp b/gui/tabs.cpp index 52ba9f5b..2bfef7d1 100644 --- a/gui/tabs.cpp +++ b/gui/tabs.cpp @@ -107,6 +107,12 @@ void Tab :: on_track_deleted(unsigned int row) tab_runtime_changed(); } +void Tab :: on_track_changed(unsigned int row) +{ + tab_model->on_row_changed(row); + tab_runtime_changed(); +} + /** @@ -187,6 +193,13 @@ void on_track_deleted(Playqueue *pq, unsigned int row) tab->on_track_deleted(row); } +void on_track_changed(Playqueue *pq, unsigned int row) +{ + Tab *tab = find_tab(pq); + if (tab) + tab->on_track_changed(row); +} + void on_switch_page(Gtk::Widget *page, int num) { std::map::iterator it; @@ -203,8 +216,9 @@ void on_switch_page(Gtk::Widget *page, int num) void init_tabs() { struct Callbacks *cb = get_callbacks(); - cb->on_queue_track_add = on_track_added; - cb->on_queue_track_del = on_track_deleted; + cb->on_queue_track_add = on_track_added; + cb->on_queue_track_del = on_track_deleted; + cb->on_queue_track_changed = on_track_changed; /* Notebook signals */ struct Gtk::Notebook *notebook = get_widget("o_notebook"); @@ -618,13 +632,6 @@ void OcarinaPage::on_close_clicked() deck :: remove(notebook->page_num(*this)); } -void OcarinaPage::on_row_changed(unsigned int row) -{ - model->on_row_changed(row); - if (is_current_tab()) - on_runtime_changed(); -} - void OcarinaPage::on_repeat_toggled() { if (page_repeat.get_active()) @@ -747,14 +754,6 @@ void OcarinaPage::on_focus_search() * Do stuff with tabs */ /* -static void on_track_changed(Playqueue *pq, unsigned int row) -{ - std::map::iterator it; - it = tab_map.find(pq); - if (it != tab_map.end()) - it->second->on_row_changed(row); -} - static void renumber_pqs() { std::map::iterator it; diff --git a/include/tabs.h b/include/tabs.h index a5abd0fa..95b951b2 100644 --- a/include/tabs.h +++ b/include/tabs.h @@ -57,6 +57,7 @@ public: virtual void on_post_init(); virtual void on_track_added(unsigned int); virtual void on_track_deleted(unsigned int); + virtual void on_track_changed(unsigned int); /** * GTK-MM callback functions