void ui_playlist_widget_update (GtkWidget * widget, gint type, gint at, gint count) { PlaylistWidgetData * data = audgui_list_get_user (widget); g_return_if_fail (data); if (type >= PLAYLIST_UPDATE_STRUCTURE) { gint diff = aud_playlist_entry_count (data->list) - audgui_list_row_count (widget); if (diff > 0) audgui_list_insert_rows (widget, at, diff); else if (diff < 0) audgui_list_delete_rows (widget, at, -diff); ui_playlist_widget_scroll (widget); } if (type >= PLAYLIST_UPDATE_METADATA) audgui_list_update_rows (widget, at, count); audgui_list_update_selection (widget, at, count); audgui_list_set_focus (widget, aud_playlist_get_focus (data->list)); update_queue (widget, data); }
void ui_playlist_widget_update (GtkWidget * widget, int type, int at, int count) { PlaylistWidgetData * data = audgui_list_get_user (widget); g_return_if_fail (data); if (type == PLAYLIST_UPDATE_STRUCTURE) { int old_entries = audgui_list_row_count (widget); int entries = aud_playlist_entry_count (data->list); audgui_list_delete_rows (widget, at, old_entries - (entries - count)); audgui_list_insert_rows (widget, at, count); /* scroll to end of playlist if entries were added there (but not if a newly added entry is playing) */ if (entries > old_entries && at + count == entries && aud_playlist_get_focus (data->list) < old_entries) aud_playlist_set_focus (data->list, entries - 1); ui_playlist_widget_scroll (widget); } else if (type == PLAYLIST_UPDATE_METADATA) audgui_list_update_rows (widget, at, count); audgui_list_update_selection (widget, at, count); audgui_list_set_focus (widget, aud_playlist_get_focus (data->list)); update_queue (widget, data); }
void ui_playlist_widget_scroll (GtkWidget * widget) { PlaylistWidgetData * data = audgui_list_get_user (widget); g_return_if_fail (data); gint row = -1; if (gtk_widget_get_realized (widget)) { gint x, y; audgui_get_mouse_coords (widget, & x, & y); row = audgui_list_row_at_point (widget, x, y); } /* Only update the info popup if it is already shown or about to be shown; * this makes sure that it doesn't pop up when the Audacious window isn't * even visible. */ if (row >= 0 && (data->popup_source || data->popup_shown)) popup_trigger (data, row); else popup_hide (data); }
void ui_playlist_widget_set_playlist (GtkWidget * widget, gint list) { PlaylistWidgetData * data = audgui_list_get_user (widget); g_return_if_fail (data); data->list = list; }
gint ui_playlist_widget_get_playlist (GtkWidget * widget) { PlaylistWidgetData * data = audgui_list_get_user (widget); g_return_val_if_fail (data, -1); return data->list; }