After an evaluation, GNOME has moved from Bugzilla to GitLab. Learn more about GitLab.
No new issues can be reported in GNOME Bugzilla anymore.
To report an issue in a GNOME project, go to GNOME GitLab.
Do not go to GNOME Gitlab for: Bluefish, Doxygen, GnuCash, GStreamer, java-gnome, LDTP, NetworkManager, Tomboy.
Bug 118862 - store browser state on playlists across sessions
store browser state on playlists across sessions
Status: RESOLVED FIXED
Product: rhythmbox
Classification: Other
Component: User Interface
0.9.x
Other Linux
: Normal enhancement
: ---
Assigned To: RhythmBox Maintainers
RhythmBox Maintainers
: 126780 322115 339970 (view as bug list)
Depends on:
Blocks: 324502
 
 
Reported: 2003-08-01 10:25 UTC by Cesar Garcia Tapia
Modified: 2012-08-03 23:19 UTC
See Also:
GNOME target: ---
GNOME version: ---


Attachments
auto playlist browsers (38.67 KB, patch)
2006-01-03 03:28 UTC, James "Doc" Livingston
none Details | Review
updated patch (77.97 KB, patch)
2006-01-09 09:43 UTC, James "Doc" Livingston
none Details | Review
updated patch (63.96 KB, patch)
2006-01-17 15:24 UTC, James "Doc" Livingston
none Details | Review
patch with missing files (80.81 KB, patch)
2006-01-21 03:07 UTC, James "Doc" Livingston
needs-work Details | Review
updated patch (82.52 KB, patch)
2006-01-28 03:53 UTC, James "Doc" Livingston
needs-work Details | Review
fixed patch (87.20 KB, patch)
2006-01-29 02:52 UTC, James "Doc" Livingston
needs-work Details | Review
updated patch (90.20 KB, patch)
2006-02-04 10:55 UTC, James "Doc" Livingston
none Details | Review
updated patch (90.53 KB, patch)
2006-02-07 11:33 UTC, James "Doc" Livingston
committed Details | Review
add browsers to static playlists (5.60 KB, patch)
2006-02-28 09:34 UTC, James "Doc" Livingston
committed Details | Review
Remember browser disclosure state for non-gconf managed sources (playlists etc.) (6.29 KB, patch)
2006-04-19 13:20 UTC, Alex Lancaster
none Details | Review
Cleaned-up browser state patch (5.62 KB, patch)
2006-04-19 14:07 UTC, Alex Lancaster
none Details | Review
Fix mistake in previous patch (5.60 KB, patch)
2006-04-19 14:13 UTC, Alex Lancaster
committed Details | Review

Description Cesar Garcia Tapia 2003-08-01 10:25:18 UTC
I've started using rhythmbox, and I like it a lot, but I have a GUI suggestion:

In the general view I can see Genre, Artist and Album. That's very useful,
but in user-created views there is only the song list. Why can't I have an
album filter in my own views? I think it could be nice.

Thank you for your work.
Comment 1 Colin Walters 2004-09-16 20:22:35 UTC
*** Bug 126780 has been marked as a duplicate of this bug. ***
Comment 2 Cesar Martinez Izquierdo 2004-11-27 11:28:17 UTC
It would be a really nice feature for me, too.

This way you can do different classifications, and you still can see the
Artist/Album view.
For example, you can create a new play list called "Classical", with all your
classical music, and then it will be really useful this "Artist"+"Album" view.
Comment 3 Jason Knight 2005-01-23 04:11:22 UTC
Yes, I don't see why it has to be any different for playlists than for the main
library. This also applies to the typable filter, why can't we have this for the
playlists? This is my single largest complaint with rhythmbox so far. 
Comment 4 James "Doc" Livingston 2005-11-22 10:52:52 UTC
*** Bug 322115 has been marked as a duplicate of this bug. ***
Comment 5 James "Doc" Livingston 2005-11-22 10:53:48 UTC
retitling to make enhancement clearer
Comment 6 Alex Lancaster 2005-11-22 10:55:55 UTC
*** Bug 322115 has been marked as a duplicate of this bug. ***
Comment 7 Alex Lancaster 2005-11-22 10:56:38 UTC
I guess I was imagining that this feature was present in rhythmbox because it
appears that this bug was opened back in 2003!  I suppose since rhythmbox seems
to have come so far in the last few months in CVS with podcast, DAAP support
etc., that I have began to use it much more, and therefore assumed that this
would have been standard functionality long ago.

Really, this is more important than the current "low" priority assigned to it,
because it is a major expectation of any user new to rhythmbox that they should
be able search and/or browse a playlist.  Sorry I don't have code to do, but it
should probably be bumped up in priority nonetheless.
Comment 8 Alex Lancaster 2005-11-22 11:04:53 UTC
I suggest "High" from the GNOME Bugzilla guidelines: 

"High  	Seriously broken, but not as high impact. Should be fixed before next
major release. Frequently includes cosmetic bugs of particularly high
visibility, regressions from functionality provided in previous releases, and
more minor bugs that are frequently reported."

"Normal 	Either a fairly straightforward workaround exists or the functionality
is not very important and/or not frequently used."

"Low 	Just not all that important. Rarely used in GNOME."

This certainly fit "the cosmetic, but frequently reported" (high) and it is
certainly not something that would be "rarely used" (low).  

Just my $0.02.
Comment 9 James "Doc" Livingston 2005-11-22 11:29:54 UTC
For automatic playlists this shouldn't be too hard, but normal playlists will be
more difficult. Once rb-playlist-source gets split into
RBAutomaticPlaylistSource and RBStaticPlaylistSource, I think we should be able
to get this done for the former.

I think the way to do it would be to factor the browser/searching code out of
RBLibrarySource into a helper class, so that RBAutomaticPlaylistSource can use
it too. It will need to have the browser widgets, and _get_query method, _search
and _reset_filters methods.

The other option would be to make RBAutomaticPlaylistSource dervie from
RBLibrarySource and make the _construct_query method a class method. The problem
 would be that it would no longer dervie from RBPlaylistSource.
Comment 10 Derek Buranen 2005-12-03 03:13:36 UTC
Even if the browsing can't be done for RBStaticPlaylistSource, we should be able
to do searching on it similar to the main window's abilities.

Browsing may be able to take a back-burner but searching would be nice?
Comment 11 James "Doc" Livingston 2005-12-03 07:58:34 UTC
From an implementation point of view, browsing and searching are equivalent. For
automatic playlists, adding these is fairly simple - the browsers and search box
get turned into additional criteria that get added to the query.

The issue with static playlists is that there currently isn't a seperation
between the tracks in the playlist, and what is visible - which also causes bug
319278. What needs to happen is we combine the patch on that bug, with using a
GtkTreeModelFilter so that HIDDEN tracks and those not matched by the
browsers/search box are not visible, but don't affect the actual playlist
definition.


This will be easier to do once the playlist source separation happens.
Comment 12 James "Doc" Livingston 2005-12-11 11:59:53 UTC
I've just committed search-box support for automatic playlists. I'll take a look
at refactoring the browser out and adding that to auto playlists soon, and
normal playlist support after that.
Comment 13 James "Doc" Livingston 2006-01-03 03:28:17 UTC
Created attachment 56690 [details] [review]
auto playlist browsers

This adds browser support to automatic playlists. There is a reasonable amount of code copied from rb-library-source.c that should be factored out into it's own class/some helper functions, but I haven't done that yet.

The only issue I've found so far is that the browser is hidden automatically when you changed sources.
Comment 14 James "Doc" Livingston 2006-01-09 09:43:16 UTC
Created attachment 57012 [details] [review]
updated patch

Browser code factored out into it's own class. It still needs a bit of tidying up - especially RBLibraryBrowserQueryType, which shouldn't have anything to do with searching.
Comment 15 James "Doc" Livingston 2006-01-17 15:24:34 UTC
Created attachment 57536 [details] [review]
updated patch

I've rewritten RBLibraryBrowser to a) have a sane API, b) make it easy to add browsers for different properties. All that sources need to do now is set the base query model, and listen for the "changed" signal.

There is a known issue of rebuild_child_model not working after the initial run, which means that "child browsers" don't get updated when something is selected in the parent. I should fix this soon.
Comment 16 Alex Lancaster 2006-01-19 14:44:30 UTC
Is the file rb-library-browser.h missing from the latest patch? Because on applying patch and recompiling, I get this:

[...]
ed-label -Wunused-value -Wchar-subscripts -Wmissing-declarations -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wcast-align -Wall -Werror -std=gnu89 -MT rb-library-source.lo -MD -MP -MF .deps/rb-library-source.Tpo -c rb-library-source.c  -fPIC -DPIC -o .libs/rb-library-source.o
rb-library-source.c:40:32: error: rb-library-browser.h: No such file or directory
Comment 17 James "Doc" Livingston 2006-01-21 03:07:41 UTC
Created attachment 57767 [details] [review]
patch with missing files

Oops, files are included in this one.
Comment 18 Alex Lancaster 2006-01-21 03:24:37 UTC
Well I can now see the browser for automatic playlists, but they are all empty (e.g. I see "0 genres" "0 artists" "0 albums" for every automatic playlist).

Also, the first time I started rhythmbox after applying the patch, it overrode my library preference and reset it to browse "Artist" and "Album" only (I normally set it to Genre, Artist, Album).
Comment 19 James "Doc" Livingston 2006-01-28 03:53:32 UTC
Created attachment 58252 [details] [review]
updated patch

Fixes the browsers to auto playlists, and makes subsequent browsers update when selection changes (by fixing rb-property-model so that it handles the query-model being changed).

For me this works well for the library and auto playlists, I haven't changed static playlists to use this yet.
Comment 20 Alex Lancaster 2006-01-28 04:40:12 UTC
This works nicely for me.  The only issue now is that it doesn't remember the state (whether browser is on or off) when you switch from playlist to playlist.  Even so, I'd say commit this now and work on that later.
Comment 21 Alex Lancaster 2006-01-28 05:19:57 UTC
Uh oh, here's a blocker.  When I click a column in the library or in an autoplaylist to resort, I get a crash:

RhythmDB-ERROR **: file rhythmdb-query-model.c: line 1868 (rhythmdb_query_model_base_index_to_child_index): assertion failed: (index == rhythmdb_query_model_child_index_to_base_index (model, pos))
aborting...
Comment 22 Alex Lancaster 2006-01-28 05:25:42 UTC
Confirming that backing out the patch removes this crash.
Comment 23 Alex Lancaster 2006-01-28 14:30:42 UTC
Here is the gdb backtrace for what it's worth:

  • #0 __kernel_vsyscall
  • #1 raise
    from /lib/libc.so.6
  • #2 abort
    from /lib/libc.so.6
  • #3 g_logv
    from /usr/lib/libglib-2.0.so.0
  • #4 g_log
    from /usr/lib/libglib-2.0.so.0
  • #5 g_assert_warning
    from /usr/lib/libglib-2.0.so.0
  • #6 rhythmdb_query_model_base_rows_reordered
    at rhythmdb-query-model.c line 1868
  • #7 gtk_marshal_VOID__UINT_STRING
    from /usr/lib/libgtk-x11-2.0.so.0
  • #8 g_closure_invoke
    from /usr/lib/libgobject-2.0.so.0
  • #9 g_signal_stop_emission
    from /usr/lib/libgobject-2.0.so.0
  • #10 g_signal_emit_valist
    from /usr/lib/libgobject-2.0.so.0
  • #11 g_signal_emit
    from /usr/lib/libgobject-2.0.so.0
  • #12 gtk_tree_model_rows_reordered
    from /usr/lib/libgtk-x11-2.0.so.0
  • #13 rhythmdb_query_model_set_sort_order
    at rhythmdb-query-model.c line 1814
  • #14 rb_entry_view_resort_model
    at rb-entry-view.c line 2108
  • #15 songs_view_sort_order_changed_cb
    at rb-library-source.c line 660
  • #16 g_cclosure_marshal_VOID__VOID
    from /usr/lib/libgobject-2.0.so.0
  • #17 g_closure_invoke
    from /usr/lib/libgobject-2.0.so.0
  • #18 g_signal_stop_emission
    from /usr/lib/libgobject-2.0.so.0
  • #19 g_signal_emit_valist
    from /usr/lib/libgobject-2.0.so.0
  • #20 g_signal_emit
    from /usr/lib/libgobject-2.0.so.0
  • #21 rb_entry_view_sync_sorting
    at rb-entry-view.c line 1037
  • #22 rb_entry_view_column_clicked_cb
    at rb-entry-view.c line 1134
  • #23 g_cclosure_marshal_VOID__VOID
    from /usr/lib/libgobject-2.0.so.0
  • #24 g_closure_invoke
    from /usr/lib/libgobject-2.0.so.0
  • #25 g_signal_stop_emission
    from /usr/lib/libgobject-2.0.so.0
  • #26 g_signal_emit_valist
    from /usr/lib/libgobject-2.0.so.0
  • #27 g_signal_emit_by_name
    from /usr/lib/libgobject-2.0.so.0
  • #28 gtk_tree_view_column_get_spacing
    from /usr/lib/libgtk-x11-2.0.so.0
  • #29 g_cclosure_marshal_VOID__VOID
    from /usr/lib/libgobject-2.0.so.0
  • #30 g_closure_invoke
    from /usr/lib/libgobject-2.0.so.0
  • #31 g_signal_stop_emission
    from /usr/lib/libgobject-2.0.so.0
  • #32 g_signal_emit_valist
    from /usr/lib/libgobject-2.0.so.0
  • #33 g_signal_emit
    from /usr/lib/libgobject-2.0.so.0
  • #34 gtk_button_clicked
    from /usr/lib/libgtk-x11-2.0.so.0
  • #35 gtk_button_get_alignment
    from /usr/lib/libgtk-x11-2.0.so.0
  • #36 g_cclosure_marshal_VOID__VOID
    from /usr/lib/libgobject-2.0.so.0
  • #37 g_cclosure_new_swap
    from /usr/lib/libgobject-2.0.so.0
  • #38 g_closure_invoke
    from /usr/lib/libgobject-2.0.so.0
  • #39 g_signal_stop_emission
    from /usr/lib/libgobject-2.0.so.0
  • #40 g_signal_emit_valist
    from /usr/lib/libgobject-2.0.so.0
  • #41 g_signal_emit
    from /usr/lib/libgobject-2.0.so.0
  • #42 gtk_button_released
    from /usr/lib/libgtk-x11-2.0.so.0
  • #43 gtk_button_set_relief
    from /usr/lib/libgtk-x11-2.0.so.0
  • #44 gtk_marshal_VOID__UINT_STRING
    from /usr/lib/libgtk-x11-2.0.so.0
  • #45 g_cclosure_new_swap
    from /usr/lib/libgobject-2.0.so.0
  • #46 g_closure_invoke
    from /usr/lib/libgobject-2.0.so.0
  • #47 g_signal_stop_emission
    from /usr/lib/libgobject-2.0.so.0
  • #48 g_signal_emit_valist
    from /usr/lib/libgobject-2.0.so.0
  • #49 g_signal_emit
    from /usr/lib/libgobject-2.0.so.0
  • #50 gtk_widget_activate
    from /usr/lib/libgtk-x11-2.0.so.0
  • #51 gtk_propagate_event
    from /usr/lib/libgtk-x11-2.0.so.0
  • #52 gtk_main_do_event
    from /usr/lib/libgtk-x11-2.0.so.0
  • #53 gdk_screen_get_setting
    from /usr/lib/libgdk-x11-2.0.so.0
  • #54 g_main_context_dispatch
    from /usr/lib/libglib-2.0.so.0
  • #55 g_main_context_check
    from /usr/lib/libglib-2.0.so.0
  • #56 g_main_loop_run
    from /usr/lib/libglib-2.0.so.0
  • #57 bonobo_main
    from /usr/lib/libbonobo-2.so.0
  • #58 main
    at main.c line 398

Comment 24 James "Doc" Livingston 2006-01-29 02:52:13 UTC
Created attachment 58307 [details] [review]
fixed patch

The problem was that my "base model resort" handling for the filter models was dodgy. It hadn't gotten tested properly before, because nothing using filter models was having the base model resorted. Basically the base->child and child->base index conversions don't work correctly during the middle of a resort.
Comment 25 Alex Lancaster 2006-01-29 03:16:51 UTC
Looks good, sorting works now.  I'd say commit now, then worry about remembering if browser state is on/off later.  This would be good to get in for 0.9.3.
Comment 26 Alex Lancaster 2006-01-29 03:24:35 UTC
(In reply to comment #25)
> remembering if browser state is on/off later.  

Regarding this issue, couldn't the browser state just be written as an attribute to the open XML tag in playlists.xml?

e.g.

<playlist name="Recently Added" type="automatic" limit-count="0" limit-size="0" limit-time="0" sort-key="Quality" sort-direction="0" browser="1">

or would this constitute abuse of the playlists.xml?  Storing it in a gconf key doesn't seem like it would work well because it would have to be synchronised with the playlists.xml file.
Comment 27 Alex Lancaster 2006-01-29 03:26:26 UTC
(In reply to comment #26)

> <playlist name="Recently Added" type="automatic" limit-count="0" limit-size="0"
> limit-time="0" sort-key="Quality" sort-direction="0" browser="1">

If the attribute "browser" was missing, then it would default to "0" and write out browser="0" to the tag the next time the XML file was written/updated.  That would preserve backwards-compatibility.
Comment 28 Jonathan Matthew 2006-01-29 03:32:27 UTC
(In reply to comment #25)
> Looks good, sorting works now.  I'd say commit now, then worry about
> remembering if browser state is on/off later.  This would be good to get in for
> 0.9.3.
> 

No, it wouldn't.  This is not the sort of patch you commit two days before a release.  It's not the end of the world if this gets pushed out to 0.9.4, but it'd suck if we had to release 0.9.3.1 in a couple of days to fix a crasher we hadn't spotted before releasing 0.9.3.
Comment 29 Alex Lancaster 2006-01-29 03:40:15 UTC
(In reply to comment #28)

> No, it wouldn't.  This is not the sort of patch you commit two days before a
> release.  It's not the end of the world if this gets pushed out to 0.9.4, but
> it'd suck if we had to release 0.9.3.1 in a couple of days to fix a crasher we
> hadn't spotted before releasing 0.9.3.

Grumble.  I guess you're right, it's just that it's such a nice feature that has been requested for 3 years.  Lack of this feature is kind of thing that makes rhythmbox not look as polished as it should be (or has become).  But you're right, it's probably better to have a stable feature than a broken one, so in this case, discretion is the better part of valour.

Comment 30 Alex Lancaster 2006-01-29 03:44:42 UTC
(In reply to comment #29)

> Grumble.  I guess you're right, it's just that it's such a nice feature that
> has been requested for 3 years.  Lack of this feature is kind of thing that
> makes rhythmbox not look as polished as it should be (or has become).  But
> you're right, it's probably better to have a stable feature than a broken one,
> so in this case, discretion is the better part of valour.

My reason for lobbying for this is that I'm admittedly a bit Fedora-centric.  If it was in 0.9.3 then there's a good chance that the Fedora people would include it in Rawhide and then in FC-5.  If it waits until 0.9.4 (depending on when that is) then it would almost certainly not be in the first release of FC-5 and my experience is that you typically have to wait a good while before the Core maintainers will upgrade apps after the first release comes out.

I like to be able to show friends who use Fedora that they have a real alternative to iTunes on Linux. So there's my bias on the table. ;-)

Comment 31 James "Doc" Livingston 2006-01-29 04:03:55 UTC
While having more features in FC5 or Dapper would be nice, putting unstable things in isn't a good plan.

This patch includes a rewrite of the library browser code. It also uses bits of the filtering query model code that nothing else uses, and so hasn't been tested properly (see the resort problem above). This will want some proper testing before it gets into a release, best done as a few weeks in cvs (so it will be tested for 0.9.4).


(In reply to comment #26)
> Regarding this issue, couldn't the browser state just be written as an
> attribute to the open XML tag in playlists.xml?
> or would this constitute abuse of the playlists.xml?  Storing it in a gconf key
> doesn't seem like it would work well because it would have to be synchronised
> with the playlists.xml file.

If we want per-playlist browser visibility (and paned position), storing it in playlist.xml is about the only option currently available. Storing it anywhere else would require that playlists have some unique identifier, which they don't.
Comment 32 Alex Lancaster 2006-02-01 13:13:42 UTC
Holding this for 0.9.4 is prudent, and to demonstrate: I discovered an additional bug in the most recent patch.  If you enable this patch then login to a DAAP server, the browser doesn't update.  It shows the same Genre/Artist/Albums as the library.  If you select an artist that happens to be in both your local library and the DAAP server, you see all the tracks by that artist on the DAAP server, and they are playable.  Playlists also have the correct content.  It appears simply that the browser doesn't update.

(In reply to comment #31)

> If we want per-playlist browser visibility (and paned position), storing it in
> playlist.xml is about the only option currently available. Storing it anywhere
> else would require that playlists have some unique identifier, which they
> don't.

Putting them in the playlists seems fine with me, they can be ignored by any other application that didn't use them.

Comment 33 James "Doc" Livingston 2006-02-02 04:28:47 UTC
I've also found an issues with RhythmDBPropertyModel - it doesn't store which tracks it has already counted, and so is confused by receiving multiple HIDDEN-changed signals from filtering models, which propagate ones from the base model as well as adding their own. This causes the track counts in the Artist browser to be doubled, and thsoe in the Album browser to be tripled.

As a workaround, we could make filtering models not add their own. But the reason solution would be to make RhythmDBPropertyModel keep track of which entries it has included, so they don't get counted twice.
Comment 34 James "Doc" Livingston 2006-02-04 10:55:26 UTC
Created attachment 58697 [details] [review]
updated patch

This patch fixed the bugs from comment 32 and comment 33.

Also daap sources have the same browser visibility and paned position as the library, because they derive from it. If this is okay, I think we could commit it and worry about browser vis/paned position later.
Comment 35 Alex Lancaster 2006-02-04 12:14:38 UTC
(In reply to comment #34)
> Created an attachment (id=58697) [edit]
> updated patch
> 
> This patch fixed the bugs from comment 32 and comment 33.
> 
> Also daap sources have the same browser visibility and paned position as the
> library, because they derive from it. If this is okay, I think we could commit
> it and worry about browser vis/paned position later.

Works for me. 

DAAP server browser seems sane as do the browsers for the autoplaylists.
Comment 36 Alex Lancaster 2006-02-06 14:31:29 UTC
Recent CVS updates seem to have broken this patch.  Even though it still applies against CVS HEAD, now it crashes whenever I click on either a Genre or an Artist in any of the browser windows.  Here's the bt:

crashes here:

0x080c600f in rhythmdb_property_model_entry_removed_cb (model=0x9937e28,
    entry=0x9f54878, propmodel=0xbfa6795c) at rhythmdb-property-model.c:478
478             if (g_hash_table_lookup (propmodel->priv->entries, entry) == NULL)

(gdb) bt
  • #0 rhythmdb_property_model_entry_removed_cb
    at rhythmdb-property-model.c line 478
  • #1 gtk_tree_model_rows_reordered
    from /usr/lib/libgtk-x11-2.0.so.0
  • #2 gtk_tree_model_foreach
    from /usr/lib/libgtk-x11-2.0.so.0
  • #3 rhythmdb_property_model_set_property
    at rhythmdb-property-model.c line 322
  • #4 g_object_set_valist
    from /usr/lib/libgobject-2.0.so.0
  • #5 g_object_set
    from /usr/lib/libgobject-2.0.so.0
  • #6 rebuild_child_model
    at rb-library-browser.c line 439
  • #7 rb_library_browser_set_selection
    at rb-library-browser.c line 461
  • #8 view_property_selected_cb
    at rb-library-browser.c line 308
  • #9 g_cclosure_marshal_VOID__POINTER
    from /usr/lib/libgobject-2.0.so.0
  • #10 g_closure_invoke
    from /usr/lib/libgobject-2.0.so.0
  • #11 g_signal_stop_emission
    from /usr/lib/libgobject-2.0.so.0
  • #12 g_signal_emit_valist
    from /usr/lib/libgobject-2.0.so.0
  • #13 g_signal_emit
    from /usr/lib/libgobject-2.0.so.0
  • #14 rb_property_view_selection_changed_cb
    at rb-property-view.c line 685
  • #15 g_cclosure_marshal_VOID__VOID
    from /usr/lib/libgobject-2.0.so.0
  • #16 g_closure_invoke
    from /usr/lib/libgobject-2.0.so.0
  • #17 g_signal_stop_emission
    from /usr/lib/libgobject-2.0.so.0
  • #18 g_signal_emit_valist
    from /usr/lib/libgobject-2.0.so.0
  • #19 g_signal_emit
    from /usr/lib/libgobject-2.0.so.0
  • #20 gtk_tree_selection_select_range
    from /usr/lib/libgtk-x11-2.0.so.0
  • #21 gtk_tree_view_scroll_to_cell
    from /usr/lib/libgtk-x11-2.0.so.0
  • #22 gtk_tree_view_set_model
    from /usr/lib/libgtk-x11-2.0.so.0
  • #23 rb_tree_dnd_button_press_event_cb
    at rb-tree-dnd.c line 855
  • #24 gtk_marshal_VOID__UINT_STRING
    from /usr/lib/libgtk-x11-2.0.so.0
  • #25 g_closure_invoke
    from /usr/lib/libgobject-2.0.so.0
  • #26 g_signal_stop_emission
    from /usr/lib/libgobject-2.0.so.0
  • #27 g_signal_emit_valist
    from /usr/lib/libgobject-2.0.so.0
  • #28 g_signal_emit
    from /usr/lib/libgobject-2.0.so.0
  • #29 gtk_widget_activate
    from /usr/lib/libgtk-x11-2.0.so.0
  • #30 gtk_propagate_event
    from /usr/lib/libgtk-x11-2.0.so.0
  • #31 gtk_main_do_event
    from /usr/lib/libgtk-x11-2.0.so.0
  • #32 gdk_screen_get_setting
    from /usr/lib/libgdk-x11-2.0.so.0
  • #33 g_main_context_dispatch
    from /usr/lib/libglib-2.0.so.0
  • #34 g_main_context_check
    from /usr/lib/libglib-2.0.so.0
  • #35 g_main_loop_run
    from /usr/lib/libglib-2.0.so.0
  • #36 bonobo_main
    from /usr/lib/libbonobo-2.so.0
  • #37 main
    at main.c line 407

Comment 37 James "Doc" Livingston 2006-02-07 11:33:33 UTC
Created attachment 58852 [details] [review]
updated patch

update for cvs changes, and fix some issues.

Hopefully this doesn't have any more problems, but it probably does.
Comment 38 Alex Lancaster 2006-02-07 12:18:21 UTC
(In reply to comment #37)

> update for cvs changes, and fix some issues. 
> Hopefully this doesn't have any more problems, but it probably does.

Tested, applies cleanly, works for me.  

Currently the patch does the right thing, it just has some user interface quirks, that you probably going to address after a commit to CVS in any case.

One issue is that if I select an item (say album) in the browser it restricts the view (good), but move to another playlist and return, it remembers that view (good), but because the browser is hidden by default, you can't see that only a subset is selected (bad).  This should be fixed when the visibility/paned state is fixed.


Comment 39 James "Doc" Livingston 2006-02-07 13:25:03 UTC
Patch committed to cvs, with the browsers preference fixed, so that it works correctly - this means we only have static playlists to go.

Remembering browser visibility (between sessions, and across source selections) and pane position (between sessions) is something that needs to be fixed.
Comment 40 James "Doc" Livingston 2006-02-28 09:34:42 UTC
Created attachment 60296 [details] [review]
add browsers to static playlists

This is the penultimate piece, browsers for static playlists.

The only thing left to do after this is store browser visibility and position.
Comment 41 Alex Lancaster 2006-02-28 09:59:22 UTC
(In reply to comment #40)
> Created an attachment (id=60296) [edit]
> add browsers to static playlists
> 
> This is the penultimate piece, browsers for static playlists.

Works for me. 

Comment 42 Jonathan Matthew 2006-02-28 10:45:38 UTC
This would add a browser to the play queue source, wouldn't it?  I don't know why exactly, but that doesn't sound right to me.  It could easily be hidden by setting   impl_can_browse to rb_false_function in rb-play-queue-source.c.
Otherwise, this looks sensible.
Comment 43 James "Doc" Livingston 2006-02-28 11:55:59 UTC
Committed, with the play-queue change. Once again I miss something because I don't use queue-as-source.
Comment 44 Alex Lancaster 2006-04-19 13:20:22 UTC
Created attachment 63863 [details] [review]
Remember browser disclosure state for non-gconf managed sources (playlists etc.)
Comment 45 Alex Lancaster 2006-04-19 14:07:32 UTC
Created attachment 63867 [details] [review]
Cleaned-up browser state patch

Moved code duplication into a function.
Comment 46 Alex Lancaster 2006-04-19 14:13:01 UTC
Created attachment 63869 [details] [review]
Fix mistake in previous patch
Comment 47 James "Doc" Livingston 2006-04-20 01:17:28 UTC
The patch looks good, so I've committed it to cvs.


Do we want to remember browser state across sessions? Visibility and pane position for playlists could be stored in the playlists.xml file if you wanted to - however to me that file should really only have stuff that define what the playlist is.
Comment 48 Alex Lancaster 2006-04-20 01:41:12 UTC
(In reply to comment #47)

> Do we want to remember browser state across sessions? Visibility and pane
> position for playlists could be stored in the playlists.xml file if you wanted
> to - however to me that file should really only have stuff that define what the
> playlist is.

Yes, I think that we should remember browser state between sessions, since Library, Podcast etc. source states are remembered it would be inconsistent for playlist browser state not to be remembered.  I agree that playlists.xml is not an ideal place to store the state, but where else could we store it?  DAAP tracks added to the queue are stored in the playlist.xml but they won't resolve upon a restart. Remembering browser state is no worse than that, IHMO.

Comment 49 Alex Lancaster 2006-04-28 02:26:24 UTC
*** Bug 339970 has been marked as a duplicate of this bug. ***
Comment 50 Pau Ruiz 2006-05-04 15:50:31 UTC
When playing a song of a playlist(static and dynamic ones), if I set a filter that makes the song disspear from the list, rhythmbox doesn't stop playing it, but it is a song from the library, if the song dissapears from the list rhythmbox stops.

The different behaviour is intended, or there should be a default behaviour?

I also think it should save browser state in betwenn sessions.
Comment 51 Alex Lancaster 2006-10-09 01:22:44 UTC
*** Bug 360756 has been marked as a duplicate of this bug. ***
Comment 52 James "Doc" Livingston 2007-03-25 06:47:26 UTC
Renaming to reflect remaining piece of work.
Comment 53 nicola 2007-11-11 09:33:04 UTC
what about this bug ? I think that it's important to remember browser state between sessions.
Comment 54 Jean-François Fortin Tam 2012-08-03 23:19:57 UTC
Let's put this bug report to rest, it's way too old and lacks focus now. Go subscribe to bug #652892 to follow-up on the remaining "Browser visibility is forgotten on program restart" issue.