From 54304572789679ebe5fcb10e8dd197328e3e36d7 Mon Sep 17 00:00:00 2001 From: Lennart Poettering Date: Thu, 3 Aug 2006 00:16:56 +0000 Subject: move sink input/source output list items if they are moved between sinks/sources git-svn-id: file:///home/lennart/svn/public/paman/trunk@82 cdefa82f-4ce1-0310-97f5-ab6066f37c3c --- src/MainWindow.cc | 34 ++++++++++++++++++++++++++-------- 1 file changed, 26 insertions(+), 8 deletions(-) diff --git a/src/MainWindow.cc b/src/MainWindow.cc index 233f539..d13f131 100644 --- a/src/MainWindow.cc +++ b/src/MainWindow.cc @@ -223,11 +223,20 @@ void MainWindow::updateInfo(ModuleInfo &i) { void MainWindow::updateInfo(SinkInputInfo &i) { char t[256]; + + SinkInfo *si = serverInfoManager->getSinkInfo(i.sink); + if (!si) + return; + + if (i.treeRef) { + Gtk::TreePath path = i.treeRef.get_path(); + path.up(); + + if (path != si->treeRef.get_path()) + deviceTreeStore->erase(deviceTreeStore->get_iter(i.treeRef.get_path())); + } + if (!i.treeRef) { - SinkInfo *si = serverInfoManager->getSinkInfo(i.sink); - if (!si) - return; - Gtk::TreeIter iter = deviceTreeStore->get_iter(si->treeRef.get_path()); i.treeRef = Gtk::TreeRowReference(deviceTreeStore, Gtk::TreePath(deviceTreeStore->append(iter->children()))); } @@ -245,11 +254,20 @@ void MainWindow::updateInfo(SinkInputInfo &i) { void MainWindow::updateInfo(SourceOutputInfo &i) { char t[256]; - if (!i.treeRef) { - SourceInfo *si = serverInfoManager->getSourceInfo(i.source); - if (!si) - return; + + SourceInfo *si = serverInfoManager->getSourceInfo(i.source); + if (!si) + return; + + if (i.treeRef) { + Gtk::TreePath path = i.treeRef.get_path(); + path.up(); + if (path != si->treeRef.get_path()) + deviceTreeStore->erase(deviceTreeStore->get_iter(i.treeRef.get_path())); + } + + if (!i.treeRef) { Gtk::TreeIter iter = deviceTreeStore->get_iter(si->treeRef.get_path()); i.treeRef = Gtk::TreeRowReference(deviceTreeStore, Gtk::TreePath(deviceTreeStore->append(iter->children()))); } -- cgit