chiark
/
gitweb
/
~mdw
/
disorder
/ commitdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
| commitdiff |
tree
raw
|
patch
|
inline
| side by side (parent:
d9b141c
)
Preserve playlist selection when list changes
author
Richard Kettlewell
<rjk@greenend.org.uk>
Mon, 23 Nov 2009 09:40:20 +0000
(09:40 +0000)
committer
Richard Kettlewell
<rjk@greenend.org.uk>
Mon, 23 Nov 2009 09:40:20 +0000
(09:40 +0000)
disobedience/playlists.c
patch
|
blob
|
blame
|
history
diff --git
a/disobedience/playlists.c
b/disobedience/playlists.c
index 4aacfb9a9acc122eb8eb53e046bd4cfcc430533c..31576ad3fc1f815a72adf22989a01fcb99f7ad0d 100644
(file)
--- a/
disobedience/playlists.c
+++ b/
disobedience/playlists.c
@@
-456,15
+456,20
@@
static void playlists_fill(const char attribute((unused)) *event,
void attribute((unused)) *callbackdata) {
GtkTreeIter iter[1];
void attribute((unused)) *callbackdata) {
GtkTreeIter iter[1];
+ if(!playlists_window)
+ return;
if(!playlists_list)
playlists_list = gtk_list_store_new(1, G_TYPE_STRING);
if(!playlists_list)
playlists_list = gtk_list_store_new(1, G_TYPE_STRING);
- gtk_list_store_clear(playlists_list);
- for(int n = 0; n < nplaylists; ++n)
+ const char *was_selected = playlists_selected;
+ gtk_list_store_clear(playlists_list); /* clears playlists_selected */
+ for(int n = 0; n < nplaylists; ++n) {
gtk_list_store_insert_with_values(playlists_list, iter, n/*position*/,
0, playlists[n], /* column 0 */
-1); /* no more cols */
gtk_list_store_insert_with_values(playlists_list, iter, n/*position*/,
0, playlists[n], /* column 0 */
-1); /* no more cols */
- // TODO reselect whatever was formerly selected if possible, if not then
- // zap the contents view
+ /* Reselect the selected playlist */
+ if(was_selected && !strcmp(was_selected, playlists[n]))
+ gtk_tree_selection_select_iter(playlists_selection, iter);
+ }
}
/** @brief Called when the selection might have changed */
}
/** @brief Called when the selection might have changed */