summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorLennart Poettering <lennart@poettering.net>2006-08-03 00:16:56 +0000
committerLennart Poettering <lennart@poettering.net>2006-08-03 00:16:56 +0000
commit54304572789679ebe5fcb10e8dd197328e3e36d7 (patch)
tree35645821979045e563f34666a22a50754adef02e
parent760c75cdf02022ac14ccab3078a1ce8c250e2832 (diff)
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
-rw-r--r--src/MainWindow.cc34
1 files 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())));
}